)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":10213,"name":"Alon Marx","email":"alonma@il.ibm.com","username":"alonmarx"},"change_message_id":"e8bcaeb1cc096d2d982acc9a582069f0a2a7effb","unresolved":false,"context_lines":[{"line_number":9,"context_line":"Implements consistency groups for XIV and A9000"},{"line_number":10,"context_line":"through generic groups mechanism (required in Pike)"},{"line_number":11,"context_line":""},{"line_number":12,"context_line":"DocImpact"},{"line_number":13,"context_line":"Depends-On: Id9964f868c2dc14aaee37e4bcbba330fb4575492"},{"line_number":14,"context_line":"Closes-Bug: #1674261"},{"line_number":15,"context_line":""}],"source_content_type":"text/x-gerrit-commit-message","patch_set":10,"id":"ffe62b97_a4d5d845","line":12,"range":{"start_line":12,"start_character":0,"end_line":12,"end_character":9},"updated":"2017-04-01 15:52:13.000000000","message":"Do you really need to change documentation here or just a release note?","commit_id":"cf483afe0979373004a3df5e412b9ea51228a573"},{"author":{"_account_id":13047,"name":"Isaac Beckman","email":"beckmani@gmail.com","username":"isaacb"},"change_message_id":"a2d16d1aecc019e22f1b99e32a72c4873f8cad96","unresolved":false,"context_lines":[{"line_number":9,"context_line":"Implements consistency groups for XIV and A9000"},{"line_number":10,"context_line":"through generic groups mechanism (required in Pike)"},{"line_number":11,"context_line":""},{"line_number":12,"context_line":"DocImpact"},{"line_number":13,"context_line":"Depends-On: Id9964f868c2dc14aaee37e4bcbba330fb4575492"},{"line_number":14,"context_line":"Closes-Bug: #1674261"},{"line_number":15,"context_line":""}],"source_content_type":"text/x-gerrit-commit-message","patch_set":10,"id":"dfeb2761_a23a3c95","line":12,"range":{"start_line":12,"start_character":0,"end_line":12,"end_character":9},"in_reply_to":"ffe62b97_a4d5d845","updated":"2017-04-02 10:34:50.000000000","message":"Just release note....","commit_id":"cf483afe0979373004a3df5e412b9ea51228a573"},{"author":{"_account_id":10213,"name":"Alon Marx","email":"alonma@il.ibm.com","username":"alonmarx"},"change_message_id":"51610170242784768762974523f6f4c40486afa1","unresolved":false,"context_lines":[{"line_number":9,"context_line":"Implements consistency groups for XIV and A9000"},{"line_number":10,"context_line":"through generic groups mechanism (required in Pike)"},{"line_number":11,"context_line":""},{"line_number":12,"context_line":"DocImpact"},{"line_number":13,"context_line":"Depends-On: Id9964f868c2dc14aaee37e4bcbba330fb4575492"},{"line_number":14,"context_line":"Closes-Bug: #1674261"},{"line_number":15,"context_line":""}],"source_content_type":"text/x-gerrit-commit-message","patch_set":11,"id":"dfeb2761_b86ff190","line":12,"range":{"start_line":12,"start_character":0,"end_line":12,"end_character":9},"updated":"2017-04-03 16:23:45.000000000","message":"Is this really needed?","commit_id":"f94870e0eeb59cf989789def963b207495bbfb18"}],"cinder/tests/unit/volume/drivers/ibm/test_xiv_proxy.py":[{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"53dc5c642a50910ce6c243c07ce23cc7abe3dd35","unresolved":false,"context_lines":[{"line_number":545,"context_line":"            driver)"},{"line_number":546,"context_line":""},{"line_number":547,"context_line":"        p.ibm_storage_cli \u003d mock.MagicMock()"},{"line_number":548,"context_line":"        p.ibm_storage_cli.cmd.perf_class_list.side_effect \u003d \\"},{"line_number":549,"context_line":"            errors.XCLIError(\u0027\u0027)"},{"line_number":550,"context_line":""},{"line_number":551,"context_line":"        ex \u003d getattr(p, \"_get_exception\")()"}],"source_content_type":"text/x-python","patch_set":10,"id":"ffe62b97_253ae233","line":548,"range":{"start_line":548,"start_character":60,"end_line":548,"end_character":61},"updated":"2017-03-30 16:39:28.000000000","message":"Use () not \\","commit_id":"cf483afe0979373004a3df5e412b9ea51228a573"},{"author":{"_account_id":13047,"name":"Isaac Beckman","email":"beckmani@gmail.com","username":"isaacb"},"change_message_id":"a2d16d1aecc019e22f1b99e32a72c4873f8cad96","unresolved":false,"context_lines":[{"line_number":545,"context_line":"            driver)"},{"line_number":546,"context_line":""},{"line_number":547,"context_line":"        p.ibm_storage_cli \u003d mock.MagicMock()"},{"line_number":548,"context_line":"        p.ibm_storage_cli.cmd.perf_class_list.side_effect \u003d \\"},{"line_number":549,"context_line":"            errors.XCLIError(\u0027\u0027)"},{"line_number":550,"context_line":""},{"line_number":551,"context_line":"        ex \u003d getattr(p, \"_get_exception\")()"}],"source_content_type":"text/x-python","patch_set":10,"id":"dfeb2761_5f17cb52","line":548,"range":{"start_line":548,"start_character":60,"end_line":548,"end_character":61},"in_reply_to":"ffe62b97_253ae233","updated":"2017-04-02 10:34:50.000000000","message":"Done","commit_id":"cf483afe0979373004a3df5e412b9ea51228a573"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"b1776fbf05009cece79ca2e7600987b2eeaa840e","unresolved":false,"context_lines":[{"line_number":1530,"context_line":"        vol_add \u003d testutils.create_volume(self.ctxt, display_name\u003d\u0027WTF32\u0027)"},{"line_number":1531,"context_line":"        vol_remove \u003d testutils.create_volume(self.ctxt, display_name\u003d\u0027WTF64\u0027)"},{"line_number":1532,"context_line":""},{"line_number":1533,"context_line":"        model_update, add_model_update, remove_model_update \u003d \\"},{"line_number":1534,"context_line":"            p.update_group({}, group_obj, [vol_add], [vol_remove])"},{"line_number":1535,"context_line":""},{"line_number":1536,"context_line":"        p.ibm_storage_cli.cmd.cg_add_vol.assert_called_once_with("}],"source_content_type":"text/x-python","patch_set":11,"id":"dfeb2761_26bdf2d7","line":1533,"range":{"start_line":1533,"start_character":62,"end_line":1533,"end_character":63},"updated":"2017-04-04 01:10:27.000000000","message":"Please use () instead of \\","commit_id":"f94870e0eeb59cf989789def963b207495bbfb18"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"b1776fbf05009cece79ca2e7600987b2eeaa840e","unresolved":false,"context_lines":[{"line_number":1597,"context_line":"        group_obj \u003d self._create_test_group()"},{"line_number":1598,"context_line":"        cgsnap_group_obj \u003d self._create_test_cgsnapshot(group_obj.id)"},{"line_number":1599,"context_line":""},{"line_number":1600,"context_line":"        model_update, snapshots_model_update \u003d \\"},{"line_number":1601,"context_line":"            p.create_group_snapshot({}, cgsnap_group_obj, [])"},{"line_number":1602,"context_line":""},{"line_number":1603,"context_line":"        p.ibm_storage_cli.cmd.cg_snapshots_create.assert_called_once_with("}],"source_content_type":"text/x-python","patch_set":11,"id":"dfeb2761_c6b9a6e9","line":1600,"range":{"start_line":1600,"start_character":47,"end_line":1600,"end_character":48},"updated":"2017-04-04 01:10:27.000000000","message":"same","commit_id":"f94870e0eeb59cf989789def963b207495bbfb18"}],"cinder/volume/drivers/ibm/ibm_storage/xiv_proxy.py":[{"author":{"_account_id":17564,"name":"jiamin","email":"shljia@cn.ibm.com","username":"jiamin"},"change_message_id":"734e2d4ccad8946857ee4e514cf43ab17c4cb2d3","unresolved":false,"context_lines":[{"line_number":1646,"context_line":"        if self._is_cgsnapshot_enabled(group):"},{"line_number":1647,"context_line":"            return self._create_consistencygroup(context, group)"},{"line_number":1648,"context_line":"        else:"},{"line_number":1649,"context_line":"            raise NotImplementedError"},{"line_number":1650,"context_line":""},{"line_number":1651,"context_line":"    def _create_consistencygroup(self, context, group):"},{"line_number":1652,"context_line":"        \"\"\"Creates a consistency group.\"\"\""}],"source_content_type":"text/x-python","patch_set":3,"id":"1a1ced50_74d352d5","line":1649,"range":{"start_line":1649,"start_character":18,"end_line":1649,"end_character":37},"updated":"2017-03-23 06:07:29.000000000","message":"NotImplementedError()？","commit_id":"3de856ee8afec0116fc97f4fed0185a74aa15bb7"},{"author":{"_account_id":17564,"name":"jiamin","email":"shljia@cn.ibm.com","username":"jiamin"},"change_message_id":"734e2d4ccad8946857ee4e514cf43ab17c4cb2d3","unresolved":false,"context_lines":[{"line_number":1724,"context_line":"                                                          group_snapshot, sorted_snapshots,"},{"line_number":1725,"context_line":"                                                          source_group, sorted_source_vols)"},{"line_number":1726,"context_line":"        else:"},{"line_number":1727,"context_line":"            raise NotImplementedError"},{"line_number":1728,"context_line":""},{"line_number":1729,"context_line":"    def _create_consistencygroup_from_src(self, context, group, volumes,"},{"line_number":1730,"context_line":"                                         cgsnapshot, snapshots,"}],"source_content_type":"text/x-python","patch_set":3,"id":"1a1ced50_b4006a35","line":1727,"range":{"start_line":1727,"start_character":18,"end_line":1727,"end_character":37},"updated":"2017-03-23 06:07:29.000000000","message":"same","commit_id":"3de856ee8afec0116fc97f4fed0185a74aa15bb7"},{"author":{"_account_id":17564,"name":"jiamin","email":"shljia@cn.ibm.com","username":"jiamin"},"change_message_id":"734e2d4ccad8946857ee4e514cf43ab17c4cb2d3","unresolved":false,"context_lines":[{"line_number":1827,"context_line":"            return self._delete_consistencygroup(context, group, volumes)"},{"line_number":1828,"context_line":"        else:"},{"line_number":1829,"context_line":"            # For generic group delete the volumes only - executed by manager"},{"line_number":1830,"context_line":"            raise NotImplementedError"},{"line_number":1831,"context_line":""},{"line_number":1832,"context_line":"    def _delete_consistencygroup(self, context, group, volumes):"},{"line_number":1833,"context_line":"        \"\"\"Deletes a consistency group.\"\"\""}],"source_content_type":"text/x-python","patch_set":3,"id":"1a1ced50_349b9a19","line":1830,"range":{"start_line":1830,"start_character":18,"end_line":1830,"end_character":37},"updated":"2017-03-23 06:07:29.000000000","message":"same","commit_id":"3de856ee8afec0116fc97f4fed0185a74aa15bb7"},{"author":{"_account_id":17564,"name":"jiamin","email":"shljia@cn.ibm.com","username":"jiamin"},"change_message_id":"734e2d4ccad8946857ee4e514cf43ab17c4cb2d3","unresolved":false,"context_lines":[{"line_number":1912,"context_line":"                                                 remove_volumes)"},{"line_number":1913,"context_line":"        else:"},{"line_number":1914,"context_line":"            # For generic group update executed by manager"},{"line_number":1915,"context_line":"            raise NotImplementedError"},{"line_number":1916,"context_line":""},{"line_number":1917,"context_line":"    def _update_consistencygroup(self, context, group,"},{"line_number":1918,"context_line":"                                 add_volumes\u003dNone, remove_volumes\u003dNone):"}],"source_content_type":"text/x-python","patch_set":3,"id":"1a1ced50_5411f65b","line":1915,"range":{"start_line":1915,"start_character":18,"end_line":1915,"end_character":37},"updated":"2017-03-23 06:07:29.000000000","message":"same","commit_id":"3de856ee8afec0116fc97f4fed0185a74aa15bb7"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"cf11e764d092e7c682c44e9fe38be47551dfcb28","unresolved":false,"context_lines":[{"line_number":1632,"context_line":"        # Note: The string is limited by the storage to 63 characters"},{"line_number":1633,"context_line":"        return (\u0027%(cgs)s.%(vol)s\u0027 % {\u0027cgs\u0027: cgs, \u0027vol\u0027: vol})[0:62]"},{"line_number":1634,"context_line":""},{"line_number":1635,"context_line":"    def _is_cgsnapshot_enabled(self, group):"},{"line_number":1636,"context_line":"        specs \u003d group_types.get_group_type_specs(group.group_type_id)"},{"line_number":1637,"context_line":"        consisgroup_enabled \u003d specs.get("},{"line_number":1638,"context_line":"            \u0027consistent_group_snapshot_enabled\u0027, \u0027\u003cis\u003e False\u0027"}],"source_content_type":"text/x-python","patch_set":4,"id":"1a1ced50_0f802846","line":1635,"updated":"2017-03-23 18:10:42.000000000","message":"Please use this function in utils.py instead of creating one yourself:\n\nhttps://github.com/openstack/cinder/blob/master/cinder/volume/utils.py#L904","commit_id":"eec3737eef0e8b3461a625514f2924608f818fae"},{"author":{"_account_id":5997,"name":"Walt","display_name":"Hemna","email":"waboring@hemna.com","username":"walter-boring","status":"SAP"},"change_message_id":"398011d6b7ccbc7e7777e8eba3d631176f07f63c","unresolved":false,"context_lines":[{"line_number":1639,"context_line":""},{"line_number":1640,"context_line":"        cgname \u003d self._cg_name_from_group(group)"},{"line_number":1641,"context_line":"        if isinstance(group, objects.Group):"},{"line_number":1642,"context_line":"            volume_type_ids \u003d \\"},{"line_number":1643,"context_line":"                group.volume_type_ids if group.volume_type_ids else []"},{"line_number":1644,"context_line":"        else:"},{"line_number":1645,"context_line":"            msg \u003d (_(\"group %(group)s has no volume_type_ids\") %"}],"source_content_type":"text/x-python","patch_set":6,"id":"ffe62b97_26a71eaa","line":1642,"updated":"2017-03-27 21:39:08.000000000","message":"use () instead of \\","commit_id":"d6db6834485382b1a555bb338618b5995f8c8ef7"},{"author":{"_account_id":13047,"name":"Isaac Beckman","email":"beckmani@gmail.com","username":"isaacb"},"change_message_id":"e0adfd96133a43ec149aaf5f08928e02572076af","unresolved":false,"context_lines":[{"line_number":1639,"context_line":""},{"line_number":1640,"context_line":"        cgname \u003d self._cg_name_from_group(group)"},{"line_number":1641,"context_line":"        if isinstance(group, objects.Group):"},{"line_number":1642,"context_line":"            volume_type_ids \u003d \\"},{"line_number":1643,"context_line":"                group.volume_type_ids if group.volume_type_ids else []"},{"line_number":1644,"context_line":"        else:"},{"line_number":1645,"context_line":"            msg \u003d (_(\"group %(group)s has no volume_type_ids\") %"}],"source_content_type":"text/x-python","patch_set":6,"id":"ffe62b97_d4a12e48","line":1642,"in_reply_to":"ffe62b97_26a71eaa","updated":"2017-03-28 08:17:15.000000000","message":"Done","commit_id":"d6db6834485382b1a555bb338618b5995f8c8ef7"},{"author":{"_account_id":5997,"name":"Walt","display_name":"Hemna","email":"waboring@hemna.com","username":"walter-boring","status":"SAP"},"change_message_id":"398011d6b7ccbc7e7777e8eba3d631176f07f63c","unresolved":false,"context_lines":[{"line_number":2064,"context_line":"            return self._delete_cgsnapshot(context, group_snapshot, snapshots)"},{"line_number":2065,"context_line":"        else:"},{"line_number":2066,"context_line":"            # For generic group snapshot delete is executed by manager"},{"line_number":2067,"context_line":"            raise NotImplementedError()"},{"line_number":2068,"context_line":""},{"line_number":2069,"context_line":"    def _delete_cgsnapshot(self, context, cgsnapshot, snapshots):"},{"line_number":2070,"context_line":"        \"\"\"Deletes a CG snapshot.\"\"\""}],"source_content_type":"text/x-python","patch_set":6,"id":"ffe62b97_462c62ab","line":2067,"updated":"2017-03-27 21:39:08.000000000","message":"if the manager does this, why do we need to raise?","commit_id":"d6db6834485382b1a555bb338618b5995f8c8ef7"},{"author":{"_account_id":13047,"name":"Isaac Beckman","email":"beckmani@gmail.com","username":"isaacb"},"change_message_id":"e0adfd96133a43ec149aaf5f08928e02572076af","unresolved":false,"context_lines":[{"line_number":2064,"context_line":"            return self._delete_cgsnapshot(context, group_snapshot, snapshots)"},{"line_number":2065,"context_line":"        else:"},{"line_number":2066,"context_line":"            # For generic group snapshot delete is executed by manager"},{"line_number":2067,"context_line":"            raise NotImplementedError()"},{"line_number":2068,"context_line":""},{"line_number":2069,"context_line":"    def _delete_cgsnapshot(self, context, cgsnapshot, snapshots):"},{"line_number":2070,"context_line":"        \"\"\"Deletes a CG snapshot.\"\"\""}],"source_content_type":"text/x-python","patch_set":6,"id":"ffe62b97_149c360d","line":2067,"in_reply_to":"ffe62b97_462c62ab","updated":"2017-03-28 08:17:15.000000000","message":"For generic groups we rely on the managed to perform the deletion of the group. We raise the exception here to signal the manger that although this function is implemented (and used for CG) we want the manager perform the deletion (when it\u0027s not CG)\nSee: http://git.openstack.org/cgit/openstack/cinder/tree/cinder/volume/manager.py#n4094","commit_id":"d6db6834485382b1a555bb338618b5995f8c8ef7"},{"author":{"_account_id":17564,"name":"jiamin","email":"shljia@cn.ibm.com","username":"jiamin"},"change_message_id":"b854636029b6471a2ee985640d7813ef547af0d5","unresolved":false,"context_lines":[{"line_number":1836,"context_line":"                 {\u0027name\u0027: cgname})"},{"line_number":1837,"context_line":"        model_update \u003d {}"},{"line_number":1838,"context_line":"        model_update[\u0027status\u0027] \u003d group.get(\u0027status\u0027,"},{"line_number":1839,"context_line":"                                           objects.fields.GroupStatus.DELETING)"},{"line_number":1840,"context_line":""},{"line_number":1841,"context_line":"        # clean up volumes"},{"line_number":1842,"context_line":"        volumes_model_update \u003d []"}],"source_content_type":"text/x-python","patch_set":7,"id":"ffe62b97_8af81a49","line":1839,"range":{"start_line":1839,"start_character":51,"end_line":1839,"end_character":57},"updated":"2017-03-28 09:52:32.000000000","message":"you should import fields and change objects.fields.GroupStatus.DELETING to fields.GroupStatus.DELETING?","commit_id":"d4138b45b52dc2a3edb7c42477ce22783ae11803"},{"author":{"_account_id":17564,"name":"jiamin","email":"shljia@cn.ibm.com","username":"jiamin"},"change_message_id":"b854636029b6471a2ee985640d7813ef547af0d5","unresolved":false,"context_lines":[{"line_number":1865,"context_line":"                LOG.error(DELETE_VOLUME_BASE_ERROR,"},{"line_number":1866,"context_line":"                          {\u0027volume\u0027: volume[\u0027name\u0027],"},{"line_number":1867,"context_line":"                           \u0027error\u0027: self._get_code_and_status_or_message(e)})"},{"line_number":1868,"context_line":"                model_update[\u0027status\u0027] \u003d \\"},{"line_number":1869,"context_line":"                    objects.fields.GroupStatus.ERROR_DELETING"},{"line_number":1870,"context_line":"                # size and volume_type_id are required in liberty code"},{"line_number":1871,"context_line":"                # they are maintained here for backwards compatibility"}],"source_content_type":"text/x-python","patch_set":7,"id":"ffe62b97_dd75ce65","line":1868,"range":{"start_line":1868,"start_character":41,"end_line":1868,"end_character":42},"updated":"2017-03-28 09:52:32.000000000","message":"change \u0027\\\u0027 to ()","commit_id":"d4138b45b52dc2a3edb7c42477ce22783ae11803"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"53dc5c642a50910ce6c243c07ce23cc7abe3dd35","unresolved":false,"context_lines":[{"line_number":1872,"context_line":"                volumes_model_update.append("},{"line_number":1873,"context_line":"                    {"},{"line_number":1874,"context_line":"                        \u0027id\u0027: volume[\u0027id\u0027],"},{"line_number":1875,"context_line":"                        \u0027status\u0027: model_update[\u0027status\u0027],"},{"line_number":1876,"context_line":"                    })"},{"line_number":1877,"context_line":""},{"line_number":1878,"context_line":"        # delete CG from cinder.volume.drivers.ibm.ibm_storage"}],"source_content_type":"text/x-python","patch_set":10,"id":"ffe62b97_85976e3b","line":1875,"range":{"start_line":1875,"start_character":34,"end_line":1875,"end_character":56},"updated":"2017-03-30 16:39:28.000000000","message":"\u0027error_deleting\u0027","commit_id":"cf483afe0979373004a3df5e412b9ea51228a573"},{"author":{"_account_id":13047,"name":"Isaac Beckman","email":"beckmani@gmail.com","username":"isaacb"},"change_message_id":"a2d16d1aecc019e22f1b99e32a72c4873f8cad96","unresolved":false,"context_lines":[{"line_number":1872,"context_line":"                volumes_model_update.append("},{"line_number":1873,"context_line":"                    {"},{"line_number":1874,"context_line":"                        \u0027id\u0027: volume[\u0027id\u0027],"},{"line_number":1875,"context_line":"                        \u0027status\u0027: model_update[\u0027status\u0027],"},{"line_number":1876,"context_line":"                    })"},{"line_number":1877,"context_line":""},{"line_number":1878,"context_line":"        # delete CG from cinder.volume.drivers.ibm.ibm_storage"}],"source_content_type":"text/x-python","patch_set":10,"id":"dfeb2761_1f094330","line":1875,"range":{"start_line":1875,"start_character":34,"end_line":1875,"end_character":56},"in_reply_to":"ffe62b97_85976e3b","updated":"2017-04-02 10:34:50.000000000","message":"Done","commit_id":"cf483afe0979373004a3df5e412b9ea51228a573"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"53dc5c642a50910ce6c243c07ce23cc7abe3dd35","unresolved":false,"context_lines":[{"line_number":2053,"context_line":"            snapshots_model_update.append("},{"line_number":2054,"context_line":"                {"},{"line_number":2055,"context_line":"                    \u0027id\u0027: snapshot[\u0027id\u0027],"},{"line_number":2056,"context_line":"                    \u0027status\u0027: model_update[\u0027status\u0027],"},{"line_number":2057,"context_line":"                })"},{"line_number":2058,"context_line":"        return model_update, snapshots_model_update"},{"line_number":2059,"context_line":""}],"source_content_type":"text/x-python","patch_set":10,"id":"ffe62b97_2590a24e","line":2056,"range":{"start_line":2056,"start_character":30,"end_line":2056,"end_character":52},"updated":"2017-03-30 16:39:28.000000000","message":"fields.SnapshotStatus.AVAILABLE","commit_id":"cf483afe0979373004a3df5e412b9ea51228a573"},{"author":{"_account_id":13047,"name":"Isaac Beckman","email":"beckmani@gmail.com","username":"isaacb"},"change_message_id":"a2d16d1aecc019e22f1b99e32a72c4873f8cad96","unresolved":false,"context_lines":[{"line_number":2053,"context_line":"            snapshots_model_update.append("},{"line_number":2054,"context_line":"                {"},{"line_number":2055,"context_line":"                    \u0027id\u0027: snapshot[\u0027id\u0027],"},{"line_number":2056,"context_line":"                    \u0027status\u0027: model_update[\u0027status\u0027],"},{"line_number":2057,"context_line":"                })"},{"line_number":2058,"context_line":"        return model_update, snapshots_model_update"},{"line_number":2059,"context_line":""}],"source_content_type":"text/x-python","patch_set":10,"id":"dfeb2761_4213705d","line":2056,"range":{"start_line":2056,"start_character":30,"end_line":2056,"end_character":52},"in_reply_to":"ffe62b97_2590a24e","updated":"2017-04-02 10:34:50.000000000","message":"Done","commit_id":"cf483afe0979373004a3df5e412b9ea51228a573"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"53dc5c642a50910ce6c243c07ce23cc7abe3dd35","unresolved":false,"context_lines":[{"line_number":2105,"context_line":"            snapshots_model_update.append("},{"line_number":2106,"context_line":"                {"},{"line_number":2107,"context_line":"                    \u0027id\u0027: snapshot[\u0027id\u0027],"},{"line_number":2108,"context_line":"                    \u0027status\u0027: model_update[\u0027status\u0027],"},{"line_number":2109,"context_line":"                })"},{"line_number":2110,"context_line":""},{"line_number":2111,"context_line":"        return model_update, snapshots_model_update"}],"source_content_type":"text/x-python","patch_set":10,"id":"ffe62b97_c588d623","line":2108,"updated":"2017-03-30 16:39:28.000000000","message":"Use fields.SnapshotStatus","commit_id":"cf483afe0979373004a3df5e412b9ea51228a573"},{"author":{"_account_id":13047,"name":"Isaac Beckman","email":"beckmani@gmail.com","username":"isaacb"},"change_message_id":"a2d16d1aecc019e22f1b99e32a72c4873f8cad96","unresolved":false,"context_lines":[{"line_number":2105,"context_line":"            snapshots_model_update.append("},{"line_number":2106,"context_line":"                {"},{"line_number":2107,"context_line":"                    \u0027id\u0027: snapshot[\u0027id\u0027],"},{"line_number":2108,"context_line":"                    \u0027status\u0027: model_update[\u0027status\u0027],"},{"line_number":2109,"context_line":"                })"},{"line_number":2110,"context_line":""},{"line_number":2111,"context_line":"        return model_update, snapshots_model_update"}],"source_content_type":"text/x-python","patch_set":10,"id":"dfeb2761_a22b5c80","line":2108,"in_reply_to":"ffe62b97_c588d623","updated":"2017-04-02 10:34:50.000000000","message":"Done","commit_id":"cf483afe0979373004a3df5e412b9ea51228a573"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"b1776fbf05009cece79ca2e7600987b2eeaa840e","unresolved":false,"context_lines":[{"line_number":1639,"context_line":"        \"\"\"Creates a group.\"\"\""},{"line_number":1640,"context_line":""},{"line_number":1641,"context_line":"        cgname \u003d self._cg_name_from_group(group)"},{"line_number":1642,"context_line":"        if isinstance(group, objects.Group):"},{"line_number":1643,"context_line":"            volume_type_ids \u003d ("},{"line_number":1644,"context_line":"                group.volume_type_ids if group.volume_type_ids else [])"},{"line_number":1645,"context_line":"        else:"},{"line_number":1646,"context_line":"            msg \u003d (_(\"group %(group)s has no volume_type_ids\") %"},{"line_number":1647,"context_line":"                   {\u0027group\u0027: cgname})"},{"line_number":1648,"context_line":"            LOG.error(msg)"},{"line_number":1649,"context_line":"            raise self.meta[\u0027exception\u0027].VolumeBackendAPIException(data\u003dmsg)"},{"line_number":1650,"context_line":"        LOG.debug(\"volume_type_ids: %s\", volume_type_ids)"},{"line_number":1651,"context_line":"        for volume_type_id in volume_type_ids:"},{"line_number":1652,"context_line":"            specs \u003d self._get_extra_specs(volume_type_id)"},{"line_number":1653,"context_line":"            replication_info \u003d self._get_replication_info(specs)"},{"line_number":1654,"context_line":""},{"line_number":1655,"context_line":"            if replication_info.get(\u0027enabled\u0027):"}],"source_content_type":"text/x-python","patch_set":11,"id":"dfeb2761_e65a6af1","line":1652,"range":{"start_line":1642,"start_character":0,"end_line":1652,"end_character":57},"updated":"2017-04-04 01:10:27.000000000","message":"There\u0027s no need to check if group is an Group instance.\n\ngroup.volume_types is a list of volume_type objects.  So no need to get it from volume_type_ids and no need to call get_extra_specs.\n\nvolume_type.extra_specs will give you extra specs.","commit_id":"f94870e0eeb59cf989789def963b207495bbfb18"}],"releasenotes/notes/xiv-generic-volume-group-4609cdc86d6aaf81.yaml":[{"author":{"_account_id":10213,"name":"Alon Marx","email":"alonma@il.ibm.com","username":"alonmarx"},"change_message_id":"e8bcaeb1cc096d2d982acc9a582069f0a2a7effb","unresolved":false,"context_lines":[{"line_number":1,"context_line":"---"},{"line_number":2,"context_line":"features:"},{"line_number":3,"context_line":"  - Add consistent group capability to generic volume groups in"},{"line_number":4,"context_line":"    XIV\\A9000 driver."}],"source_content_type":"text/x-yaml","patch_set":10,"id":"dfeb2761_030fb3e1","line":4,"updated":"2017-04-01 15:52:13.000000000","message":"\u003d\u003e to XIV, Spectrum Accelerate and A9000/R  storage systems","commit_id":"cf483afe0979373004a3df5e412b9ea51228a573"},{"author":{"_account_id":13047,"name":"Isaac Beckman","email":"beckmani@gmail.com","username":"isaacb"},"change_message_id":"a2d16d1aecc019e22f1b99e32a72c4873f8cad96","unresolved":false,"context_lines":[{"line_number":1,"context_line":"---"},{"line_number":2,"context_line":"features:"},{"line_number":3,"context_line":"  - Add consistent group capability to generic volume groups in"},{"line_number":4,"context_line":"    XIV\\A9000 driver."}],"source_content_type":"text/x-yaml","patch_set":10,"id":"dfeb2761_42413039","line":4,"in_reply_to":"dfeb2761_030fb3e1","updated":"2017-04-02 10:34:50.000000000","message":"Done","commit_id":"cf483afe0979373004a3df5e412b9ea51228a573"}]}
