)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"9dcf995f44be0eb67575d032fd74302cd9345178","unresolved":false,"context_lines":[{"line_number":13,"context_line":"Minor change to iscsi driver inheritance."},{"line_number":14,"context_line":""},{"line_number":15,"context_line":"Change-Id: I485329883ba35b341f1b3e79897e5fe6680de1f3"},{"line_number":16,"context_line":"Implements: blue-print dell-add-consistency-groups"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":5,"id":"ba3cc151_16fb1348","line":16,"updated":"2015-07-03 14:21:13.000000000","message":"The blueprint link doesn\u0027t work. It should be \"blueprint\", not \"blue-print\".","commit_id":"8538369674d3aee66244526e8b42dae678f90c41"}],"cinder/tests/unit/test_dellsc.py":[{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"f850a590a0de96fe976dd5f574d6f09dc602038e","unresolved":false,"context_lines":[{"line_number":1209,"context_line":"        model_update, volumes \u003d self.driver.delete_consistencygroup(context,"},{"line_number":1210,"context_line":"                                                                    group)"},{"line_number":1211,"context_line":"        mock_find_replay_profile.assert_called_once_with(group[\u0027id\u0027])"},{"line_number":1212,"context_line":"        self.assertEqual(False, mock_delete_replay_profile.called)"},{"line_number":1213,"context_line":"        mock_delete_volume.assert_called_once_with(mock_volume)"},{"line_number":1214,"context_line":"        self.assertEqual(group[\u0027status\u0027], model_update[\u0027status\u0027])"},{"line_number":1215,"context_line":"        self.assertEqual(expected_volumes, volumes)"}],"source_content_type":"text/x-python","patch_set":2,"id":"ba3cc151_d1e8f97e","line":1212,"updated":"2015-06-30 17:23:55.000000000","message":"Should be:\n\nself.assertFalse(mock_delete_replay_profile.called)","commit_id":"9b9849391a027f40b039632b0ce94fe969cf7404"},{"author":{"_account_id":12112,"name":"Tom Swanson","email":"tom_swanson@dell.com","username":"tomswanson"},"change_message_id":"388f7fe013333082ac89a3ee4df5163d72284c00","unresolved":false,"context_lines":[{"line_number":1209,"context_line":"        model_update, volumes \u003d self.driver.delete_consistencygroup(context,"},{"line_number":1210,"context_line":"                                                                    group)"},{"line_number":1211,"context_line":"        mock_find_replay_profile.assert_called_once_with(group[\u0027id\u0027])"},{"line_number":1212,"context_line":"        self.assertEqual(False, mock_delete_replay_profile.called)"},{"line_number":1213,"context_line":"        mock_delete_volume.assert_called_once_with(mock_volume)"},{"line_number":1214,"context_line":"        self.assertEqual(group[\u0027status\u0027], model_update[\u0027status\u0027])"},{"line_number":1215,"context_line":"        self.assertEqual(expected_volumes, volumes)"}],"source_content_type":"text/x-python","patch_set":2,"id":"ba3cc151_aa1cde13","line":1212,"in_reply_to":"ba3cc151_d1e8f97e","updated":"2015-06-30 18:12:32.000000000","message":"Done","commit_id":"9b9849391a027f40b039632b0ce94fe969cf7404"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"8a3a526981079b25da768ccf93d96d204001f3f7","unresolved":false,"context_lines":[{"line_number":1304,"context_line":"        self.driver.db \u003d mock.Mock()"},{"line_number":1305,"context_line":"        mock_snapshot \u003d mock.MagicMock()"},{"line_number":1306,"context_line":"        expected_snapshots \u003d [mock_snapshot]"},{"line_number":1307,"context_line":"        self.driver.db.snapshot_get_all_for_cgsnapshot.return_value \u003d \\"},{"line_number":1308,"context_line":"            expected_snapshots"},{"line_number":1309,"context_line":"        context \u003d {}"},{"line_number":1310,"context_line":"        cggrp \u003d {\u0027consistencygroup_id\u0027: \u0027fc8f2fec-fab2-4e34-9148-c094c913b9a3\u0027,"}],"source_content_type":"text/x-python","patch_set":4,"id":"ba3cc151_2c1c2ec0","line":1307,"updated":"2015-07-01 18:22:13.000000000","message":"Use () instead of \\","commit_id":"a064ceab1a9ed38f55f6d72650c181a89092e6db"},{"author":{"_account_id":12112,"name":"Tom Swanson","email":"tom_swanson@dell.com","username":"tomswanson"},"change_message_id":"e588e773349cd4afc7a06e2ef7fd9bc6bcaa0c8f","unresolved":false,"context_lines":[{"line_number":1304,"context_line":"        self.driver.db \u003d mock.Mock()"},{"line_number":1305,"context_line":"        mock_snapshot \u003d mock.MagicMock()"},{"line_number":1306,"context_line":"        expected_snapshots \u003d [mock_snapshot]"},{"line_number":1307,"context_line":"        self.driver.db.snapshot_get_all_for_cgsnapshot.return_value \u003d \\"},{"line_number":1308,"context_line":"            expected_snapshots"},{"line_number":1309,"context_line":"        context \u003d {}"},{"line_number":1310,"context_line":"        cggrp \u003d {\u0027consistencygroup_id\u0027: \u0027fc8f2fec-fab2-4e34-9148-c094c913b9a3\u0027,"}],"source_content_type":"text/x-python","patch_set":4,"id":"ba3cc151_987010de","line":1307,"in_reply_to":"ba3cc151_2c1c2ec0","updated":"2015-07-01 19:40:24.000000000","message":"That absolutely ruins the look of the line.  Done but under protest.","commit_id":"a064ceab1a9ed38f55f6d72650c181a89092e6db"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"8a3a526981079b25da768ccf93d96d204001f3f7","unresolved":false,"context_lines":[{"line_number":1375,"context_line":"        self.driver.db \u003d mock.Mock()"},{"line_number":1376,"context_line":"        mock_snapshot \u003d mock.MagicMock()"},{"line_number":1377,"context_line":"        expected_snapshots \u003d [mock_snapshot]"},{"line_number":1378,"context_line":"        self.driver.db.snapshot_get_all_for_cgsnapshot.return_value \u003d \\"},{"line_number":1379,"context_line":"            expected_snapshots"},{"line_number":1380,"context_line":"        context \u003d {}"},{"line_number":1381,"context_line":"        cgsnap \u003d {\u0027consistencygroup_id\u0027:"}],"source_content_type":"text/x-python","patch_set":4,"id":"ba3cc151_4c573258","line":1378,"updated":"2015-07-01 18:22:13.000000000","message":"()","commit_id":"a064ceab1a9ed38f55f6d72650c181a89092e6db"},{"author":{"_account_id":12112,"name":"Tom Swanson","email":"tom_swanson@dell.com","username":"tomswanson"},"change_message_id":"e588e773349cd4afc7a06e2ef7fd9bc6bcaa0c8f","unresolved":false,"context_lines":[{"line_number":1375,"context_line":"        self.driver.db \u003d mock.Mock()"},{"line_number":1376,"context_line":"        mock_snapshot \u003d mock.MagicMock()"},{"line_number":1377,"context_line":"        expected_snapshots \u003d [mock_snapshot]"},{"line_number":1378,"context_line":"        self.driver.db.snapshot_get_all_for_cgsnapshot.return_value \u003d \\"},{"line_number":1379,"context_line":"            expected_snapshots"},{"line_number":1380,"context_line":"        context \u003d {}"},{"line_number":1381,"context_line":"        cgsnap \u003d {\u0027consistencygroup_id\u0027:"}],"source_content_type":"text/x-python","patch_set":4,"id":"ba3cc151_387a24be","line":1378,"in_reply_to":"ba3cc151_4c573258","updated":"2015-07-01 19:40:24.000000000","message":"Done","commit_id":"a064ceab1a9ed38f55f6d72650c181a89092e6db"}],"cinder/tests/unit/test_dellscapi.py":[{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"f850a590a0de96fe976dd5f574d6f09dc602038e","unresolved":false,"context_lines":[{"line_number":4444,"context_line":"                                           remove_volumes)"},{"line_number":4445,"context_line":"        self.assertTrue(mock_get_id.called)"},{"line_number":4446,"context_line":"        mock_add_cg_volumes.assert_called_once_with(\u0027100\u0027, add_volumes)"},{"line_number":4447,"context_line":"        self.assertTrue(not mock_remove_cg_volumes.called)"},{"line_number":4448,"context_line":"        self.assertTrue(res)"},{"line_number":4449,"context_line":""},{"line_number":4450,"context_line":"    @mock.patch.object(dell_storagecenter_api.StorageCenterApi,"}],"source_content_type":"text/x-python","patch_set":2,"id":"ba3cc151_3403530f","line":4447,"updated":"2015-06-30 17:23:55.000000000","message":"assertFalse(mock_remove_cg_volumes.called)","commit_id":"9b9849391a027f40b039632b0ce94fe969cf7404"},{"author":{"_account_id":12112,"name":"Tom Swanson","email":"tom_swanson@dell.com","username":"tomswanson"},"change_message_id":"388f7fe013333082ac89a3ee4df5163d72284c00","unresolved":false,"context_lines":[{"line_number":4444,"context_line":"                                           remove_volumes)"},{"line_number":4445,"context_line":"        self.assertTrue(mock_get_id.called)"},{"line_number":4446,"context_line":"        mock_add_cg_volumes.assert_called_once_with(\u0027100\u0027, add_volumes)"},{"line_number":4447,"context_line":"        self.assertTrue(not mock_remove_cg_volumes.called)"},{"line_number":4448,"context_line":"        self.assertTrue(res)"},{"line_number":4449,"context_line":""},{"line_number":4450,"context_line":"    @mock.patch.object(dell_storagecenter_api.StorageCenterApi,"}],"source_content_type":"text/x-python","patch_set":2,"id":"ba3cc151_6aed76ee","line":4447,"in_reply_to":"ba3cc151_3403530f","updated":"2015-06-30 18:12:32.000000000","message":"Done","commit_id":"9b9849391a027f40b039632b0ce94fe969cf7404"},{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"f850a590a0de96fe976dd5f574d6f09dc602038e","unresolved":false,"context_lines":[{"line_number":4497,"context_line":"                                           remove_volumes)"},{"line_number":4498,"context_line":"        self.assertTrue(mock_get_id.called)"},{"line_number":4499,"context_line":"        mock_add_cg_volumes.assert_called_once_with(\u0027100\u0027, add_volumes)"},{"line_number":4500,"context_line":"        self.assertTrue(not mock_remove_cg_volumes.called)"},{"line_number":4501,"context_line":"        self.assertFalse(res)"},{"line_number":4502,"context_line":""},{"line_number":4503,"context_line":"    @mock.patch.object(dell_storagecenter_api.StorageCenterApi,"}],"source_content_type":"text/x-python","patch_set":2,"id":"ba3cc151_7419db78","line":4500,"updated":"2015-06-30 17:23:55.000000000","message":"assertFalse","commit_id":"9b9849391a027f40b039632b0ce94fe969cf7404"},{"author":{"_account_id":12112,"name":"Tom Swanson","email":"tom_swanson@dell.com","username":"tomswanson"},"change_message_id":"388f7fe013333082ac89a3ee4df5163d72284c00","unresolved":false,"context_lines":[{"line_number":4497,"context_line":"                                           remove_volumes)"},{"line_number":4498,"context_line":"        self.assertTrue(mock_get_id.called)"},{"line_number":4499,"context_line":"        mock_add_cg_volumes.assert_called_once_with(\u0027100\u0027, add_volumes)"},{"line_number":4500,"context_line":"        self.assertTrue(not mock_remove_cg_volumes.called)"},{"line_number":4501,"context_line":"        self.assertFalse(res)"},{"line_number":4502,"context_line":""},{"line_number":4503,"context_line":"    @mock.patch.object(dell_storagecenter_api.StorageCenterApi,"}],"source_content_type":"text/x-python","patch_set":2,"id":"ba3cc151_aa913e54","line":4500,"in_reply_to":"ba3cc151_7419db78","updated":"2015-06-30 18:12:32.000000000","message":"Done","commit_id":"9b9849391a027f40b039632b0ce94fe969cf7404"}],"cinder/volume/drivers/dell/dell_storagecenter_api.py":[{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"f850a590a0de96fe976dd5f574d6f09dc602038e","unresolved":false,"context_lines":[{"line_number":1569,"context_line":"                    LOG.error(_LE(\u0027Multiple replay profiles under name %s\u0027),"},{"line_number":1570,"context_line":"                              name)"},{"line_number":1571,"context_line":"                    raise exception.VolumeBackendAPIException("},{"line_number":1572,"context_line":"                        \u0027Multiple profiles found.\u0027)"},{"line_number":1573,"context_line":"                return profilelist[0]"},{"line_number":1574,"context_line":"        else:"},{"line_number":1575,"context_line":"            LOG.error(_LE(\u0027find_replay_profile error %s\u0027), r)"}],"source_content_type":"text/x-python","patch_set":2,"id":"ba3cc151_3478338f","line":1572,"updated":"2015-06-30 17:23:55.000000000","message":"Exception text should have _().","commit_id":"9b9849391a027f40b039632b0ce94fe969cf7404"},{"author":{"_account_id":12112,"name":"Tom Swanson","email":"tom_swanson@dell.com","username":"tomswanson"},"change_message_id":"388f7fe013333082ac89a3ee4df5163d72284c00","unresolved":false,"context_lines":[{"line_number":1569,"context_line":"                    LOG.error(_LE(\u0027Multiple replay profiles under name %s\u0027),"},{"line_number":1570,"context_line":"                              name)"},{"line_number":1571,"context_line":"                    raise exception.VolumeBackendAPIException("},{"line_number":1572,"context_line":"                        \u0027Multiple profiles found.\u0027)"},{"line_number":1573,"context_line":"                return profilelist[0]"},{"line_number":1574,"context_line":"        else:"},{"line_number":1575,"context_line":"            LOG.error(_LE(\u0027find_replay_profile error %s\u0027), r)"}],"source_content_type":"text/x-python","patch_set":2,"id":"ba3cc151_6a72564b","line":1572,"in_reply_to":"ba3cc151_3478338f","updated":"2015-06-30 18:12:32.000000000","message":"Done","commit_id":"9b9849391a027f40b039632b0ce94fe969cf7404"},{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"f850a590a0de96fe976dd5f574d6f09dc602038e","unresolved":false,"context_lines":[{"line_number":1587,"context_line":"            payload \u003d {}"},{"line_number":1588,"context_line":"            payload[\u0027StorageCenter\u0027] \u003d self.ssn"},{"line_number":1589,"context_line":"            payload[\u0027Name\u0027] \u003d name"},{"line_number":1590,"context_line":"            # consistent is type 3."},{"line_number":1591,"context_line":"            payload[\u0027Type\u0027] \u003d \u0027Consistent\u0027"},{"line_number":1592,"context_line":"            payload[\u0027Notes\u0027] \u003d self.notes"},{"line_number":1593,"context_line":"            r \u003d self.client.post(\u0027StorageCenter/ScReplayProfile\u0027,"}],"source_content_type":"text/x-python","patch_set":2,"id":"ba3cc151_f4a88bdd","line":1590,"updated":"2015-06-30 17:23:55.000000000","message":"Does filtered type need to be 3 or \u0027Consistent\u0027? If it is the string as you have it here, is this comment necessary?","commit_id":"9b9849391a027f40b039632b0ce94fe969cf7404"},{"author":{"_account_id":12112,"name":"Tom Swanson","email":"tom_swanson@dell.com","username":"tomswanson"},"change_message_id":"388f7fe013333082ac89a3ee4df5163d72284c00","unresolved":false,"context_lines":[{"line_number":1587,"context_line":"            payload \u003d {}"},{"line_number":1588,"context_line":"            payload[\u0027StorageCenter\u0027] \u003d self.ssn"},{"line_number":1589,"context_line":"            payload[\u0027Name\u0027] \u003d name"},{"line_number":1590,"context_line":"            # consistent is type 3."},{"line_number":1591,"context_line":"            payload[\u0027Type\u0027] \u003d \u0027Consistent\u0027"},{"line_number":1592,"context_line":"            payload[\u0027Notes\u0027] \u003d self.notes"},{"line_number":1593,"context_line":"            r \u003d self.client.post(\u0027StorageCenter/ScReplayProfile\u0027,"}],"source_content_type":"text/x-python","patch_set":2,"id":"ba3cc151_aac61e47","line":1590,"in_reply_to":"ba3cc151_f4a88bdd","updated":"2015-06-30 18:12:32.000000000","message":"Turns out it needed to be \u0027Consistent\u0027 and not a 3.  Comment removed.","commit_id":"9b9849391a027f40b039632b0ce94fe969cf7404"},{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"f850a590a0de96fe976dd5f574d6f09dc602038e","unresolved":false,"context_lines":[{"line_number":1613,"context_line":"                      {\u0027cg\u0027: profile.get(\u0027name\u0027),"},{"line_number":1614,"context_line":"                       \u0027reason\u0027: r})"},{"line_number":1615,"context_line":"            raise exception.VolumeBackendAPIException("},{"line_number":1616,"context_line":"                \u0027Error deleting replay profile.\u0027)"},{"line_number":1617,"context_line":""},{"line_number":1618,"context_line":"    def _get_volume_configuration(self, scvolume):"},{"line_number":1619,"context_line":"        \u0027\u0027\u0027Get the ScVolumeConfiguration object."}],"source_content_type":"text/x-python","patch_set":2,"id":"ba3cc151_74b55b2f","line":1616,"updated":"2015-06-30 17:23:55.000000000","message":"_()","commit_id":"9b9849391a027f40b039632b0ce94fe969cf7404"},{"author":{"_account_id":12112,"name":"Tom Swanson","email":"tom_swanson@dell.com","username":"tomswanson"},"change_message_id":"388f7fe013333082ac89a3ee4df5163d72284c00","unresolved":false,"context_lines":[{"line_number":1613,"context_line":"                      {\u0027cg\u0027: profile.get(\u0027name\u0027),"},{"line_number":1614,"context_line":"                       \u0027reason\u0027: r})"},{"line_number":1615,"context_line":"            raise exception.VolumeBackendAPIException("},{"line_number":1616,"context_line":"                \u0027Error deleting replay profile.\u0027)"},{"line_number":1617,"context_line":""},{"line_number":1618,"context_line":"    def _get_volume_configuration(self, scvolume):"},{"line_number":1619,"context_line":"        \u0027\u0027\u0027Get the ScVolumeConfiguration object."}],"source_content_type":"text/x-python","patch_set":2,"id":"ba3cc151_6ac0162b","line":1616,"in_reply_to":"ba3cc151_74b55b2f","updated":"2015-06-30 18:12:32.000000000","message":"Done","commit_id":"9b9849391a027f40b039632b0ce94fe969cf7404"},{"author":{"_account_id":12924,"name":"Patrick East","email":"east.patrick@gmail.com","username":"patrick.east"},"change_message_id":"cdd306a3f325543d652d74c3c1306f27bdc978de","unresolved":false,"context_lines":[{"line_number":1598,"context_line":"        return profile"},{"line_number":1599,"context_line":""},{"line_number":1600,"context_line":"    def delete_replay_profile(self, profile):"},{"line_number":1601,"context_line":"        # Before we whack our profile we need to get the volume list."},{"line_number":1602,"context_line":"        r \u003d self.client.delete(\u0027StorageCenter/ScReplayProfile/%s\u0027 %"},{"line_number":1603,"context_line":"                               self._get_id(profile))"},{"line_number":1604,"context_line":"        # 200 is a good return.  Log and leave."}],"source_content_type":"text/x-python","patch_set":3,"id":"ba3cc151_45dc2312","line":1601,"updated":"2015-06-30 18:45:30.000000000","message":"This comment is here... but I don\u0027t see it happening? Am I missing something, or does this comment no longer apply?","commit_id":"0c78fbbc27cd98baec3f51f4c5f604098d825a91"},{"author":{"_account_id":12112,"name":"Tom Swanson","email":"tom_swanson@dell.com","username":"tomswanson"},"change_message_id":"db6b38c380ab3b88430397b2d6dd96a0bd1cf6ab","unresolved":false,"context_lines":[{"line_number":1598,"context_line":"        return profile"},{"line_number":1599,"context_line":""},{"line_number":1600,"context_line":"    def delete_replay_profile(self, profile):"},{"line_number":1601,"context_line":"        # Before we whack our profile we need to get the volume list."},{"line_number":1602,"context_line":"        r \u003d self.client.delete(\u0027StorageCenter/ScReplayProfile/%s\u0027 %"},{"line_number":1603,"context_line":"                               self._get_id(profile))"},{"line_number":1604,"context_line":"        # 200 is a good return.  Log and leave."}],"source_content_type":"text/x-python","patch_set":3,"id":"ba3cc151_7d369753","line":1601,"in_reply_to":"ba3cc151_45dc2312","updated":"2015-06-30 20:47:18.000000000","message":"One wonders if it was something I was doing or something I intended to do.  Oh!  Yeah. We don\u0027t need to do that now.  (Get our info from the db rather than the backend profile.)  If I have to push up again I\u0027ll get rid of the comment.","commit_id":"0c78fbbc27cd98baec3f51f4c5f604098d825a91"}],"cinder/volume/drivers/dell/dell_storagecenter_common.py":[{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"f850a590a0de96fe976dd5f574d6f09dc602038e","unresolved":false,"context_lines":[{"line_number":486,"context_line":"            if profile:"},{"line_number":487,"context_line":"                LOG.debug(\u0027profile %s replayid %s\u0027, profile, snapshotid)"},{"line_number":488,"context_line":"                if api.snap_cg_replay(profile, snapshotid, 0):"},{"line_number":489,"context_line":"                    # Now we return with some funky shit I know nothing of."},{"line_number":490,"context_line":"                    snapshots \u003d self.db.snapshot_get_all_for_cgsnapshot("},{"line_number":491,"context_line":"                        context,"},{"line_number":492,"context_line":"                        snapshotid)"}],"source_content_type":"text/x-python","patch_set":2,"id":"ba3cc151_d426a767","line":489,"updated":"2015-06-30 17:23:55.000000000","message":"Probably should reword. :)","commit_id":"9b9849391a027f40b039632b0ce94fe969cf7404"},{"author":{"_account_id":12112,"name":"Tom Swanson","email":"tom_swanson@dell.com","username":"tomswanson"},"change_message_id":"388f7fe013333082ac89a3ee4df5163d72284c00","unresolved":false,"context_lines":[{"line_number":486,"context_line":"            if profile:"},{"line_number":487,"context_line":"                LOG.debug(\u0027profile %s replayid %s\u0027, profile, snapshotid)"},{"line_number":488,"context_line":"                if api.snap_cg_replay(profile, snapshotid, 0):"},{"line_number":489,"context_line":"                    # Now we return with some funky shit I know nothing of."},{"line_number":490,"context_line":"                    snapshots \u003d self.db.snapshot_get_all_for_cgsnapshot("},{"line_number":491,"context_line":"                        context,"},{"line_number":492,"context_line":"                        snapshotid)"}],"source_content_type":"text/x-python","patch_set":2,"id":"ba3cc151_4a4af2c6","line":489,"in_reply_to":"ba3cc151_d426a767","updated":"2015-06-30 18:12:32.000000000","message":"Comment removed.","commit_id":"9b9849391a027f40b039632b0ce94fe969cf7404"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"e79c67093582b93601aa13cf0f251029ac0a1c26","unresolved":false,"context_lines":[{"line_number":411,"context_line":"        the model_update and volumes_model_update and return them or"},{"line_number":412,"context_line":"        return None, None."},{"line_number":413,"context_line":"        \u0027\u0027\u0027"},{"line_number":414,"context_line":"        raise NotImplementedError()"},{"line_number":415,"context_line":""},{"line_number":416,"context_line":"    def delete_consistencygroup(self, context, group):"},{"line_number":417,"context_line":"        \u0027\u0027\u0027Deletes a consistency group.\u0027\u0027\u0027"}],"source_content_type":"text/x-python","patch_set":3,"id":"ba3cc151_e8563929","line":414,"updated":"2015-07-01 16:01:54.000000000","message":"If you are not implementing this, you don\u0027t need this here.","commit_id":"0c78fbbc27cd98baec3f51f4c5f604098d825a91"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"8a3a526981079b25da768ccf93d96d204001f3f7","unresolved":false,"context_lines":[{"line_number":417,"context_line":"        the model_update and volumes_model_update and return them or"},{"line_number":418,"context_line":"        return None, None."},{"line_number":419,"context_line":"        \u0027\u0027\u0027"},{"line_number":420,"context_line":"        raise NotImplementedError()"},{"line_number":421,"context_line":""},{"line_number":422,"context_line":"    def delete_consistencygroup(self, context, group):"},{"line_number":423,"context_line":"        \u0027\u0027\u0027Delete the Dell SC profile associated with this consistency group."}],"source_content_type":"text/x-python","patch_set":4,"id":"ba3cc151_ecd72649","line":420,"updated":"2015-07-01 18:22:13.000000000","message":"This should be removed.  You\u0027ll get this from the base class.","commit_id":"a064ceab1a9ed38f55f6d72650c181a89092e6db"},{"author":{"_account_id":12112,"name":"Tom Swanson","email":"tom_swanson@dell.com","username":"tomswanson"},"change_message_id":"e588e773349cd4afc7a06e2ef7fd9bc6bcaa0c8f","unresolved":false,"context_lines":[{"line_number":417,"context_line":"        the model_update and volumes_model_update and return them or"},{"line_number":418,"context_line":"        return None, None."},{"line_number":419,"context_line":"        \u0027\u0027\u0027"},{"line_number":420,"context_line":"        raise NotImplementedError()"},{"line_number":421,"context_line":""},{"line_number":422,"context_line":"    def delete_consistencygroup(self, context, group):"},{"line_number":423,"context_line":"        \u0027\u0027\u0027Delete the Dell SC profile associated with this consistency group."}],"source_content_type":"text/x-python","patch_set":4,"id":"ba3cc151_d8f53857","line":420,"in_reply_to":"ba3cc151_ecd72649","updated":"2015-07-01 19:40:24.000000000","message":"Done","commit_id":"a064ceab1a9ed38f55f6d72650c181a89092e6db"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"8a3a526981079b25da768ccf93d96d204001f3f7","unresolved":false,"context_lines":[{"line_number":475,"context_line":"        with self._client.open_connection() as api:"},{"line_number":476,"context_line":"            profile \u003d api.find_replay_profile(gid)"},{"line_number":477,"context_line":"            if not profile:"},{"line_number":478,"context_line":"                LOG.error(_LE(\u0027Cannot find Consistency Group %s\u0027), gid)"},{"line_number":479,"context_line":"            elif api.update_cg_volumes(profile,"},{"line_number":480,"context_line":"                                       add_volumes,"},{"line_number":481,"context_line":"                                       remove_volumes):"}],"source_content_type":"text/x-python","patch_set":4,"id":"ba3cc151_8c569acc","line":478,"updated":"2015-07-01 18:22:13.000000000","message":"This should be just a warning because it won\u0027t fail the operation.","commit_id":"a064ceab1a9ed38f55f6d72650c181a89092e6db"},{"author":{"_account_id":12112,"name":"Tom Swanson","email":"tom_swanson@dell.com","username":"tomswanson"},"change_message_id":"e588e773349cd4afc7a06e2ef7fd9bc6bcaa0c8f","unresolved":false,"context_lines":[{"line_number":475,"context_line":"        with self._client.open_connection() as api:"},{"line_number":476,"context_line":"            profile \u003d api.find_replay_profile(gid)"},{"line_number":477,"context_line":"            if not profile:"},{"line_number":478,"context_line":"                LOG.error(_LE(\u0027Cannot find Consistency Group %s\u0027), gid)"},{"line_number":479,"context_line":"            elif api.update_cg_volumes(profile,"},{"line_number":480,"context_line":"                                       add_volumes,"},{"line_number":481,"context_line":"                                       remove_volumes):"}],"source_content_type":"text/x-python","patch_set":4,"id":"ba3cc151_38dea4dd","line":478,"in_reply_to":"ba3cc151_8c569acc","updated":"2015-07-01 19:40:24.000000000","message":"It\u0027ll drop through to the exception.","commit_id":"a064ceab1a9ed38f55f6d72650c181a89092e6db"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"69f458bb83b0fdbf987573df0ca0806890e7902d","unresolved":false,"context_lines":[{"line_number":377,"context_line":"        return {\u0027_name_id\u0027: new_volume[\u0027_name_id\u0027] or new_volume[\u0027id\u0027]}"},{"line_number":378,"context_line":""},{"line_number":379,"context_line":"    def create_consistencygroup(self, context, group):"},{"line_number":380,"context_line":"        \u0027\u0027\u0027This creates a replay profile on the storage backend"},{"line_number":381,"context_line":""},{"line_number":382,"context_line":"        :param context: the context of the caller."},{"line_number":383,"context_line":"        :param group: the dictionary of the consistency group to be created."}],"source_content_type":"text/x-python","patch_set":6,"id":"ba3cc151_15be9ed4","line":380,"updated":"2015-07-04 01:07:11.000000000","message":"Please add a period if you are updating another patch.","commit_id":"a7ce2d3be89d628aaee963b6f4a37cbe83e4821a"},{"author":{"_account_id":12112,"name":"Tom Swanson","email":"tom_swanson@dell.com","username":"tomswanson"},"change_message_id":"dfd4f7ae75919656f59d777cffe874bf5840ea0c","unresolved":false,"context_lines":[{"line_number":377,"context_line":"        return {\u0027_name_id\u0027: new_volume[\u0027_name_id\u0027] or new_volume[\u0027id\u0027]}"},{"line_number":378,"context_line":""},{"line_number":379,"context_line":"    def create_consistencygroup(self, context, group):"},{"line_number":380,"context_line":"        \u0027\u0027\u0027This creates a replay profile on the storage backend"},{"line_number":381,"context_line":""},{"line_number":382,"context_line":"        :param context: the context of the caller."},{"line_number":383,"context_line":"        :param group: the dictionary of the consistency group to be created."}],"source_content_type":"text/x-python","patch_set":6,"id":"ba3cc151_e871bc78","line":380,"in_reply_to":"ba3cc151_15be9ed4","updated":"2015-07-06 15:10:32.000000000","message":"Done","commit_id":"a7ce2d3be89d628aaee963b6f4a37cbe83e4821a"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"69f458bb83b0fdbf987573df0ca0806890e7902d","unresolved":false,"context_lines":[{"line_number":386,"context_line":"        \u0027\u0027\u0027"},{"line_number":387,"context_line":"        gid \u003d group[\u0027id\u0027]"},{"line_number":388,"context_line":"        with self._client.open_connection() as api:"},{"line_number":389,"context_line":"            cgroup \u003d api.create_replay_profile(gid)"},{"line_number":390,"context_line":"            if cgroup:"},{"line_number":391,"context_line":"                LOG.info(_LI(\u0027Created Consistency Group %s\u0027), gid)"},{"line_number":392,"context_line":"                return"}],"source_content_type":"text/x-python","patch_set":6,"id":"ba3cc151_55c4265e","line":389,"updated":"2015-07-04 01:07:11.000000000","message":"What if an error happened when creating profile?  Are you not handling the exception?","commit_id":"a7ce2d3be89d628aaee963b6f4a37cbe83e4821a"},{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"a4c5b3a1ed81ace7e6453634c1a3b3981f3fdd69","unresolved":false,"context_lines":[{"line_number":386,"context_line":"        \u0027\u0027\u0027"},{"line_number":387,"context_line":"        gid \u003d group[\u0027id\u0027]"},{"line_number":388,"context_line":"        with self._client.open_connection() as api:"},{"line_number":389,"context_line":"            cgroup \u003d api.create_replay_profile(gid)"},{"line_number":390,"context_line":"            if cgroup:"},{"line_number":391,"context_line":"                LOG.info(_LI(\u0027Created Consistency Group %s\u0027), gid)"},{"line_number":392,"context_line":"                return"}],"source_content_type":"text/x-python","patch_set":6,"id":"ba3cc151_ee4ea595","line":389,"in_reply_to":"ba3cc151_4d879ad7","updated":"2015-07-06 15:37:00.000000000","message":"Looks like create_replay_profile returns None if it is not successful. Then this will fall through to raise the VolumeBackendApiException that it wasn\u0027t able to create the consistency group. I think that is what we want.","commit_id":"a7ce2d3be89d628aaee963b6f4a37cbe83e4821a"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"87fc55c97dde1aa342eefd281563d8f881fb8f7b","unresolved":false,"context_lines":[{"line_number":386,"context_line":"        \u0027\u0027\u0027"},{"line_number":387,"context_line":"        gid \u003d group[\u0027id\u0027]"},{"line_number":388,"context_line":"        with self._client.open_connection() as api:"},{"line_number":389,"context_line":"            cgroup \u003d api.create_replay_profile(gid)"},{"line_number":390,"context_line":"            if cgroup:"},{"line_number":391,"context_line":"                LOG.info(_LI(\u0027Created Consistency Group %s\u0027), gid)"},{"line_number":392,"context_line":"                return"}],"source_content_type":"text/x-python","patch_set":6,"id":"ba3cc151_ee78e591","line":389,"in_reply_to":"ba3cc151_4d879ad7","updated":"2015-07-06 15:33:03.000000000","message":"Looks like your API will either report a profile or None. So this is fine.","commit_id":"a7ce2d3be89d628aaee963b6f4a37cbe83e4821a"},{"author":{"_account_id":12112,"name":"Tom Swanson","email":"tom_swanson@dell.com","username":"tomswanson"},"change_message_id":"dfd4f7ae75919656f59d777cffe874bf5840ea0c","unresolved":false,"context_lines":[{"line_number":386,"context_line":"        \u0027\u0027\u0027"},{"line_number":387,"context_line":"        gid \u003d group[\u0027id\u0027]"},{"line_number":388,"context_line":"        with self._client.open_connection() as api:"},{"line_number":389,"context_line":"            cgroup \u003d api.create_replay_profile(gid)"},{"line_number":390,"context_line":"            if cgroup:"},{"line_number":391,"context_line":"                LOG.info(_LI(\u0027Created Consistency Group %s\u0027), gid)"},{"line_number":392,"context_line":"                return"}],"source_content_type":"text/x-python","patch_set":6,"id":"ba3cc151_4d879ad7","line":389,"in_reply_to":"ba3cc151_55c4265e","updated":"2015-07-06 15:10:32.000000000","message":"I would think that throwing the exception would be the appropriate thing to be doing.  That happens in dell_storagecenter_api.py.  In the driver I don\u0027t really have any other options at this point.  Throw the exception and let the layers above retry.","commit_id":"a7ce2d3be89d628aaee963b6f4a37cbe83e4821a"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"25d331b97243b5a897e1d2444d651e85d046c271","unresolved":false,"context_lines":[{"line_number":386,"context_line":"        \u0027\u0027\u0027"},{"line_number":387,"context_line":"        gid \u003d group[\u0027id\u0027]"},{"line_number":388,"context_line":"        with self._client.open_connection() as api:"},{"line_number":389,"context_line":"            cgroup \u003d api.create_replay_profile(gid)"},{"line_number":390,"context_line":"            if cgroup:"},{"line_number":391,"context_line":"                LOG.info(_LI(\u0027Created Consistency Group %s\u0027), gid)"},{"line_number":392,"context_line":"                return"}],"source_content_type":"text/x-python","patch_set":6,"id":"ba3cc151_91dcd847","line":389,"in_reply_to":"ba3cc151_ee4ea595","updated":"2015-07-06 15:41:00.000000000","message":"Not sure if I made it clear in my earlier comments. I mean how you handled it is fine. I agree with Sean.","commit_id":"a7ce2d3be89d628aaee963b6f4a37cbe83e4821a"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"69f458bb83b0fdbf987573df0ca0806890e7902d","unresolved":false,"context_lines":[{"line_number":404,"context_line":"        with self._client.open_connection() as api:"},{"line_number":405,"context_line":"            profile \u003d api.find_replay_profile(gid)"},{"line_number":406,"context_line":"            if profile:"},{"line_number":407,"context_line":"                api.delete_replay_profile(profile)"},{"line_number":408,"context_line":"        # If we are here because we found no profile that should be fine"},{"line_number":409,"context_line":"        # as we are trying to delete it anyway."},{"line_number":410,"context_line":""}],"source_content_type":"text/x-python","patch_set":6,"id":"ba3cc151_15a53eb4","line":407,"updated":"2015-07-04 01:07:11.000000000","message":"If profile not found, continue is fine. What if some other error occurs?","commit_id":"a7ce2d3be89d628aaee963b6f4a37cbe83e4821a"},{"author":{"_account_id":12112,"name":"Tom Swanson","email":"tom_swanson@dell.com","username":"tomswanson"},"change_message_id":"dfd4f7ae75919656f59d777cffe874bf5840ea0c","unresolved":false,"context_lines":[{"line_number":404,"context_line":"        with self._client.open_connection() as api:"},{"line_number":405,"context_line":"            profile \u003d api.find_replay_profile(gid)"},{"line_number":406,"context_line":"            if profile:"},{"line_number":407,"context_line":"                api.delete_replay_profile(profile)"},{"line_number":408,"context_line":"        # If we are here because we found no profile that should be fine"},{"line_number":409,"context_line":"        # as we are trying to delete it anyway."},{"line_number":410,"context_line":""}],"source_content_type":"text/x-python","patch_set":6,"id":"ba3cc151_ad4d06c6","line":407,"in_reply_to":"ba3cc151_15a53eb4","updated":"2015-07-06 15:10:32.000000000","message":"Same as above.  I explicitly throw an exception in dell_storagecenter_api.py","commit_id":"a7ce2d3be89d628aaee963b6f4a37cbe83e4821a"},{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"a4c5b3a1ed81ace7e6453634c1a3b3981f3fdd69","unresolved":false,"context_lines":[{"line_number":404,"context_line":"        with self._client.open_connection() as api:"},{"line_number":405,"context_line":"            profile \u003d api.find_replay_profile(gid)"},{"line_number":406,"context_line":"            if profile:"},{"line_number":407,"context_line":"                api.delete_replay_profile(profile)"},{"line_number":408,"context_line":"        # If we are here because we found no profile that should be fine"},{"line_number":409,"context_line":"        # as we are trying to delete it anyway."},{"line_number":410,"context_line":""}],"source_content_type":"text/x-python","patch_set":6,"id":"ba3cc151_513ad0ce","line":407,"in_reply_to":"ba3cc151_ad4d06c6","updated":"2015-07-06 15:37:00.000000000","message":"I agree, if we aren\u0027t able to find it, we are deleting it anyway so that should be fine. This is consistent with what happens for deleting a volume that is not found.","commit_id":"a7ce2d3be89d628aaee963b6f4a37cbe83e4821a"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"69f458bb83b0fdbf987573df0ca0806890e7902d","unresolved":false,"context_lines":[{"line_number":447,"context_line":"        \u0027\u0027\u0027"},{"line_number":448,"context_line":"        gid \u003d group[\u0027id\u0027]"},{"line_number":449,"context_line":"        with self._client.open_connection() as api:"},{"line_number":450,"context_line":"            profile \u003d api.find_replay_profile(gid)"},{"line_number":451,"context_line":"            if not profile:"},{"line_number":452,"context_line":"                LOG.error(_LE(\u0027Cannot find Consistency Group %s\u0027), gid)"},{"line_number":453,"context_line":"            elif api.update_cg_volumes(profile,"}],"source_content_type":"text/x-python","patch_set":6,"id":"ba3cc151_7594ca43","line":450,"updated":"2015-07-04 01:07:11.000000000","message":"What if an exception was thrown here?  You are not handling that?  I think I have the same question on other places as well.","commit_id":"a7ce2d3be89d628aaee963b6f4a37cbe83e4821a"},{"author":{"_account_id":12112,"name":"Tom Swanson","email":"tom_swanson@dell.com","username":"tomswanson"},"change_message_id":"dfd4f7ae75919656f59d777cffe874bf5840ea0c","unresolved":false,"context_lines":[{"line_number":447,"context_line":"        \u0027\u0027\u0027"},{"line_number":448,"context_line":"        gid \u003d group[\u0027id\u0027]"},{"line_number":449,"context_line":"        with self._client.open_connection() as api:"},{"line_number":450,"context_line":"            profile \u003d api.find_replay_profile(gid)"},{"line_number":451,"context_line":"            if not profile:"},{"line_number":452,"context_line":"                LOG.error(_LE(\u0027Cannot find Consistency Group %s\u0027), gid)"},{"line_number":453,"context_line":"            elif api.update_cg_volumes(profile,"}],"source_content_type":"text/x-python","patch_set":6,"id":"ba3cc151_6dedbe8d","line":450,"in_reply_to":"ba3cc151_7594ca43","updated":"2015-07-06 15:10:32.000000000","message":"Same answer.  Is there something different I should be doing?","commit_id":"a7ce2d3be89d628aaee963b6f4a37cbe83e4821a"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"69f458bb83b0fdbf987573df0ca0806890e7902d","unresolved":false,"context_lines":[{"line_number":522,"context_line":"                model_update \u003d {\u0027status\u0027: cgsnapshot[\u0027status\u0027]}"},{"line_number":523,"context_line":""},{"line_number":524,"context_line":"                return model_update, snapshots"},{"line_number":525,"context_line":""},{"line_number":526,"context_line":"        raise exception.VolumeBackendAPIException("},{"line_number":527,"context_line":"            _(\u0027Unable to delete Consistency Group snapshot %s\u0027) % snapshotid)"}],"source_content_type":"text/x-python","patch_set":6,"id":"ba3cc151_95914e55","line":525,"updated":"2015-07-04 01:07:11.000000000","message":"If cgsnapshot cannot be found, delete cgsnapshot should continue and you should still update the statuses just as what you did in delete CG.\n\nIf some other exception occurs, it should be handled.","commit_id":"a7ce2d3be89d628aaee963b6f4a37cbe83e4821a"},{"author":{"_account_id":12112,"name":"Tom Swanson","email":"tom_swanson@dell.com","username":"tomswanson"},"change_message_id":"dfd4f7ae75919656f59d777cffe874bf5840ea0c","unresolved":false,"context_lines":[{"line_number":522,"context_line":"                model_update \u003d {\u0027status\u0027: cgsnapshot[\u0027status\u0027]}"},{"line_number":523,"context_line":""},{"line_number":524,"context_line":"                return model_update, snapshots"},{"line_number":525,"context_line":""},{"line_number":526,"context_line":"        raise exception.VolumeBackendAPIException("},{"line_number":527,"context_line":"            _(\u0027Unable to delete Consistency Group snapshot %s\u0027) % snapshotid)"}],"source_content_type":"text/x-python","patch_set":6,"id":"ba3cc151_a85414ca","line":525,"in_reply_to":"ba3cc151_95914e55","updated":"2015-07-06 15:10:32.000000000","message":"I now update the snapshots if the profile cannot be found.  As to the exceptions throwing the exception was the handling.  Should I be catching them here and re-throwing?","commit_id":"a7ce2d3be89d628aaee963b6f4a37cbe83e4821a"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"87fc55c97dde1aa342eefd281563d8f881fb8f7b","unresolved":false,"context_lines":[{"line_number":522,"context_line":"                model_update \u003d {\u0027status\u0027: cgsnapshot[\u0027status\u0027]}"},{"line_number":523,"context_line":""},{"line_number":524,"context_line":"                return model_update, snapshots"},{"line_number":525,"context_line":""},{"line_number":526,"context_line":"        raise exception.VolumeBackendAPIException("},{"line_number":527,"context_line":"            _(\u0027Unable to delete Consistency Group snapshot %s\u0027) % snapshotid)"}],"source_content_type":"text/x-python","patch_set":6,"id":"ba3cc151_ceede18f","line":525,"in_reply_to":"ba3cc151_a85414ca","updated":"2015-07-06 15:33:03.000000000","message":"You are throwing exception in delete_replay_profile. So it should be caught here and re-thrown.","commit_id":"a7ce2d3be89d628aaee963b6f4a37cbe83e4821a"},{"author":{"_account_id":12112,"name":"Tom Swanson","email":"tom_swanson@dell.com","username":"tomswanson"},"change_message_id":"1b84e6f7f1cff41fdaeba0f1bffb129b046bc2bd","unresolved":false,"context_lines":[{"line_number":522,"context_line":"                model_update \u003d {\u0027status\u0027: cgsnapshot[\u0027status\u0027]}"},{"line_number":523,"context_line":""},{"line_number":524,"context_line":"                return model_update, snapshots"},{"line_number":525,"context_line":""},{"line_number":526,"context_line":"        raise exception.VolumeBackendAPIException("},{"line_number":527,"context_line":"            _(\u0027Unable to delete Consistency Group snapshot %s\u0027) % snapshotid)"}],"source_content_type":"text/x-python","patch_set":6,"id":"ba3cc151_c881514f","line":525,"in_reply_to":"ba3cc151_ceede18f","updated":"2015-07-06 16:47:53.000000000","message":"This looks way wrong.  Fixed function soon.","commit_id":"a7ce2d3be89d628aaee963b6f4a37cbe83e4821a"}]}
