)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":7198,"name":"Jay Bryant","email":"jungleboyj@electronicjungle.net","username":"jsbryant"},"change_message_id":"3a38b0d6b8ba5f7f5833e0feb053709834256770","unresolved":false,"context_lines":[{"line_number":13,"context_line":""},{"line_number":14,"context_line":"The driver was also not checking that volumes were initialized prior"},{"line_number":15,"context_line":"to snapshotting a consistency group. The dell backend does not"},{"line_number":16,"context_line":"actually created until there is data or the volumes are mapped to"},{"line_number":17,"context_line":"a server."},{"line_number":18,"context_line":""},{"line_number":19,"context_line":"On create_volume_from_snapshot the driver was not checking for"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":5,"id":"9a41bdd9_4512f1b5","line":16,"updated":"2015-07-17 21:14:00.000000000","message":"This doesn\u0027t make sense:  What is not created?","commit_id":"0f5a06c82dbfdc73998ff972467cd95ed64f6af4"},{"author":{"_account_id":12112,"name":"Tom Swanson","email":"tom_swanson@dell.com","username":"tomswanson"},"change_message_id":"14ab88092c4c8f33da86daee6dfa72b32b15bc12","unresolved":false,"context_lines":[{"line_number":13,"context_line":""},{"line_number":14,"context_line":"The driver was also not checking that volumes were initialized prior"},{"line_number":15,"context_line":"to snapshotting a consistency group. The dell backend does not"},{"line_number":16,"context_line":"actually created until there is data or the volumes are mapped to"},{"line_number":17,"context_line":"a server."},{"line_number":18,"context_line":""},{"line_number":19,"context_line":"On create_volume_from_snapshot the driver was not checking for"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":5,"id":"9a41bdd9_2ce79541","line":16,"in_reply_to":"9a41bdd9_4512f1b5","updated":"2015-07-17 22:00:52.000000000","message":"The volumes.  Should read The Dell backend does not actually create a volume until there is data or the volumes are mapped to a server.","commit_id":"0f5a06c82dbfdc73998ff972467cd95ed64f6af4"}],"cinder/tests/unit/test_dellsc.py":[{"author":{"_account_id":8247,"name":"Thang Pham","email":"thang.g.pham@gmail.com","username":"thang.pham"},"change_message_id":"5343822f80ee342f00a875029950d964e0d4936e","unresolved":false,"context_lines":[{"line_number":1487,"context_line":"                               mock_init):"},{"line_number":1488,"context_line":"        mock_snapshot \u003d mock.MagicMock()"},{"line_number":1489,"context_line":"        expected_snapshots \u003d [mock_snapshot]"},{"line_number":1490,"context_line":"        mock_get_all_for_cgsnapshot.return_value \u003d (expected_snapshots)"},{"line_number":1491,"context_line":"        context \u003d {}"},{"line_number":1492,"context_line":"        cgsnap \u003d {\u0027consistencygroup_id\u0027:"},{"line_number":1493,"context_line":"                  \u0027fc8f2fec-fab2-4e34-9148-c094c913b9a3\u0027,"}],"source_content_type":"text/x-python","patch_set":9,"id":"3a50d1a3_102dada7","line":1490,"updated":"2015-07-22 14:42:02.000000000","message":"Not necessary to put expected_snapshots in parentheses.","commit_id":"f3aee27a2298ec08bc2ea817207bef6afaa066eb"},{"author":{"_account_id":12112,"name":"Tom Swanson","email":"tom_swanson@dell.com","username":"tomswanson"},"change_message_id":"74e9a0dd7a939a13ea8f47b4d70dd42f8a9400b4","unresolved":false,"context_lines":[{"line_number":1487,"context_line":"                               mock_init):"},{"line_number":1488,"context_line":"        mock_snapshot \u003d mock.MagicMock()"},{"line_number":1489,"context_line":"        expected_snapshots \u003d [mock_snapshot]"},{"line_number":1490,"context_line":"        mock_get_all_for_cgsnapshot.return_value \u003d (expected_snapshots)"},{"line_number":1491,"context_line":"        context \u003d {}"},{"line_number":1492,"context_line":"        cgsnap \u003d {\u0027consistencygroup_id\u0027:"},{"line_number":1493,"context_line":"                  \u0027fc8f2fec-fab2-4e34-9148-c094c913b9a3\u0027,"}],"source_content_type":"text/x-python","patch_set":9,"id":"3a50d1a3_c128d935","line":1490,"in_reply_to":"3a50d1a3_102dada7","updated":"2015-07-22 15:17:09.000000000","message":"If I had to guess I probably started with a line that was too long.  If i have to update I\u0027ll fix this.","commit_id":"f3aee27a2298ec08bc2ea817207bef6afaa066eb"},{"author":{"_account_id":8247,"name":"Thang Pham","email":"thang.g.pham@gmail.com","username":"thang.pham"},"change_message_id":"5343822f80ee342f00a875029950d964e0d4936e","unresolved":false,"context_lines":[{"line_number":1517,"context_line":"                                                 mock_init):"},{"line_number":1518,"context_line":"        mock_snapshot \u003d mock.MagicMock()"},{"line_number":1519,"context_line":"        expected_snapshots \u003d [mock_snapshot]"},{"line_number":1520,"context_line":"        mock_get_all_for_cgsnapshot.return_value \u003d (expected_snapshots)"},{"line_number":1521,"context_line":"        context \u003d {}"},{"line_number":1522,"context_line":"        cgsnap \u003d {\u0027consistencygroup_id\u0027:"},{"line_number":1523,"context_line":"                  \u0027fc8f2fec-fab2-4e34-9148-c094c913b9a3\u0027,"}],"source_content_type":"text/x-python","patch_set":9,"id":"3a50d1a3_d0198589","line":1520,"updated":"2015-07-22 14:42:02.000000000","message":"Ditto","commit_id":"f3aee27a2298ec08bc2ea817207bef6afaa066eb"}],"cinder/volume/drivers/dell/dell_storagecenter_api.py":[{"author":{"_account_id":8247,"name":"Thang Pham","email":"thang.g.pham@gmail.com","username":"thang.pham"},"change_message_id":"03e07079b6f3effc7471b416eb84b02e5130e550","unresolved":false,"context_lines":[{"line_number":1749,"context_line":"            vols \u003d self._get_json(r)"},{"line_number":1750,"context_line":"            for vol in vols:"},{"line_number":1751,"context_line":"                if (vol.get(\u0027active\u0027) is not True or"},{"line_number":1752,"context_line":"                   vol.get(\u0027replayAllowed\u0027) is not True):"},{"line_number":1753,"context_line":"                    self._init_volume(vol)"},{"line_number":1754,"context_line":""},{"line_number":1755,"context_line":"    def snap_cg_replay(self, profile, replayid, expire):"}],"source_content_type":"text/x-python","patch_set":2,"id":"9a41bdd9_67146a4c","line":1752,"updated":"2015-07-15 13:50:19.000000000","message":"L1752 does not line up with L1751.  It is one space off.","commit_id":"fc9c6e2872484d443e9d1865dc4232a7d5539607"},{"author":{"_account_id":8247,"name":"Thang Pham","email":"thang.g.pham@gmail.com","username":"thang.pham"},"change_message_id":"3e88ba1e2ddd2e3dfe087399476fdb994f8daba7","unresolved":false,"context_lines":[{"line_number":1749,"context_line":"            vols \u003d self._get_json(r)"},{"line_number":1750,"context_line":"            for vol in vols:"},{"line_number":1751,"context_line":"                if (vol.get(\u0027active\u0027) is not True or"},{"line_number":1752,"context_line":"                   vol.get(\u0027replayAllowed\u0027) is not True):"},{"line_number":1753,"context_line":"                    self._init_volume(vol)"},{"line_number":1754,"context_line":""},{"line_number":1755,"context_line":"    def snap_cg_replay(self, profile, replayid, expire):"}],"source_content_type":"text/x-python","patch_set":2,"id":"9a41bdd9_e94da4c4","line":1752,"in_reply_to":"9a41bdd9_6125325a","updated":"2015-07-15 16:41:13.000000000","message":"Ok.  Seems odd.","commit_id":"fc9c6e2872484d443e9d1865dc4232a7d5539607"},{"author":{"_account_id":12112,"name":"Tom Swanson","email":"tom_swanson@dell.com","username":"tomswanson"},"change_message_id":"713bdb415b1d1aab9afa59fec851b3b0bfb001b4","unresolved":false,"context_lines":[{"line_number":1749,"context_line":"            vols \u003d self._get_json(r)"},{"line_number":1750,"context_line":"            for vol in vols:"},{"line_number":1751,"context_line":"                if (vol.get(\u0027active\u0027) is not True or"},{"line_number":1752,"context_line":"                   vol.get(\u0027replayAllowed\u0027) is not True):"},{"line_number":1753,"context_line":"                    self._init_volume(vol)"},{"line_number":1754,"context_line":""},{"line_number":1755,"context_line":"    def snap_cg_replay(self, profile, replayid, expire):"}],"source_content_type":"text/x-python","patch_set":2,"id":"9a41bdd9_6125325a","line":1752,"in_reply_to":"9a41bdd9_67146a4c","updated":"2015-07-15 16:12:05.000000000","message":"I thought that, too, but it nets me a flake8 error.\n\n\"./cinder/volume/drivers/dell/dell_storagecenter_api.py:1752:5: E129 visually indented line with same indent as next logical line\"","commit_id":"fc9c6e2872484d443e9d1865dc4232a7d5539607"},{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"34a1a0f9d696ddfb61858f48ed7a27da8428f55f","unresolved":false,"context_lines":[{"line_number":1749,"context_line":"            vols \u003d self._get_json(r)"},{"line_number":1750,"context_line":"            for vol in vols:"},{"line_number":1751,"context_line":"                if (vol.get(\u0027active\u0027) is not True or"},{"line_number":1752,"context_line":"                   vol.get(\u0027replayAllowed\u0027) is not True):"},{"line_number":1753,"context_line":"                    self._init_volume(vol)"},{"line_number":1754,"context_line":""},{"line_number":1755,"context_line":"    def snap_cg_replay(self, profile, replayid, expire):"}],"source_content_type":"text/x-python","patch_set":2,"id":"9a41bdd9_198291c8","line":1752,"in_reply_to":"9a41bdd9_e94da4c4","updated":"2015-07-15 18:19:32.000000000","message":"The problem is actually that the next line, the code within the if block, is then at the same level. It will need to be indented more so it is not at the same level.","commit_id":"fc9c6e2872484d443e9d1865dc4232a7d5539607"},{"author":{"_account_id":7198,"name":"Jay Bryant","email":"jungleboyj@electronicjungle.net","username":"jsbryant"},"change_message_id":"3a38b0d6b8ba5f7f5833e0feb053709834256770","unresolved":false,"context_lines":[{"line_number":1738,"context_line":"        return ret"},{"line_number":1739,"context_line":""},{"line_number":1740,"context_line":"    def _init_cg_volumes(self, profileid):"},{"line_number":1741,"context_line":"        \u0027\u0027\u0027Gets the cg volume list and maps/unmaps and non active vols."},{"line_number":1742,"context_line":""},{"line_number":1743,"context_line":"        :param profileid: Replay profile identifier."},{"line_number":1744,"context_line":"        :return: Nothing"}],"source_content_type":"text/x-python","patch_set":5,"id":"9a41bdd9_25d48dbb","line":1741,"updated":"2015-07-17 21:14:00.000000000","message":"Do you mean: Gets the cg volume list, maps/unmaps and non active vols.","commit_id":"0f5a06c82dbfdc73998ff972467cd95ed64f6af4"},{"author":{"_account_id":12112,"name":"Tom Swanson","email":"tom_swanson@dell.com","username":"tomswanson"},"change_message_id":"14ab88092c4c8f33da86daee6dfa72b32b15bc12","unresolved":false,"context_lines":[{"line_number":1738,"context_line":"        return ret"},{"line_number":1739,"context_line":""},{"line_number":1740,"context_line":"    def _init_cg_volumes(self, profileid):"},{"line_number":1741,"context_line":"        \u0027\u0027\u0027Gets the cg volume list and maps/unmaps and non active vols."},{"line_number":1742,"context_line":""},{"line_number":1743,"context_line":"        :param profileid: Replay profile identifier."},{"line_number":1744,"context_line":"        :return: Nothing"}],"source_content_type":"text/x-python","patch_set":5,"id":"9a41bdd9_cccce9bd","line":1741,"in_reply_to":"9a41bdd9_25d48dbb","updated":"2015-07-17 22:00:52.000000000","message":"\u0027the non active vols.\u0027","commit_id":"0f5a06c82dbfdc73998ff972467cd95ed64f6af4"}],"cinder/volume/drivers/dell/dell_storagecenter_common.py":[{"author":{"_account_id":8247,"name":"Thang Pham","email":"thang.g.pham@gmail.com","username":"thang.pham"},"change_message_id":"03e07079b6f3effc7471b416eb84b02e5130e550","unresolved":false,"context_lines":[{"line_number":234,"context_line":"                    if srcvol is not None:"},{"line_number":235,"context_line":"                        scvolume \u003d api.create_cloned_volume(volume_name,"},{"line_number":236,"context_line":"                                                            srcvol)"},{"line_number":237,"context_line":"                        # Update Consistency Group"},{"line_number":238,"context_line":"                        if scvolume and volume.get(\u0027consistencygroup_id\u0027):"},{"line_number":239,"context_line":"                            profile \u003d api.find_replay_profile("},{"line_number":240,"context_line":"                                volume.get(\u0027consistencygroup_id\u0027))"}],"source_content_type":"text/x-python","patch_set":2,"id":"9a41bdd9_8a6173ab","line":237,"updated":"2015-07-15 13:50:19.000000000","message":"Could this new code be put in a method, e.g. _update_consistencygroup, to reduce redundancy?  L121, L204, and L237 are identical.","commit_id":"fc9c6e2872484d443e9d1865dc4232a7d5539607"},{"author":{"_account_id":12112,"name":"Tom Swanson","email":"tom_swanson@dell.com","username":"tomswanson"},"change_message_id":"713bdb415b1d1aab9afa59fec851b3b0bfb001b4","unresolved":false,"context_lines":[{"line_number":234,"context_line":"                    if srcvol is not None:"},{"line_number":235,"context_line":"                        scvolume \u003d api.create_cloned_volume(volume_name,"},{"line_number":236,"context_line":"                                                            srcvol)"},{"line_number":237,"context_line":"                        # Update Consistency Group"},{"line_number":238,"context_line":"                        if scvolume and volume.get(\u0027consistencygroup_id\u0027):"},{"line_number":239,"context_line":"                            profile \u003d api.find_replay_profile("},{"line_number":240,"context_line":"                                volume.get(\u0027consistencygroup_id\u0027))"}],"source_content_type":"text/x-python","patch_set":2,"id":"9a41bdd9_1353573a","line":237,"in_reply_to":"9a41bdd9_8a6173ab","updated":"2015-07-15 16:12:05.000000000","message":"Yep.  Done.","commit_id":"fc9c6e2872484d443e9d1865dc4232a7d5539607"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"c8f390f1229cd789a8f1dfe8711c57d201821d69","unresolved":false,"context_lines":[{"line_number":196,"context_line":"        src_volume_name \u003d snapshot.get(\u0027volume_id\u0027)"},{"line_number":197,"context_line":"        snapshot_id \u003d snapshot.get(\u0027cgsnapshot_id\u0027)"},{"line_number":198,"context_line":"        if not snapshot_id:"},{"line_number":199,"context_line":"            snapshot_id \u003d snapshot.get(\u0027id\u0027)"},{"line_number":200,"context_line":"        volume_name \u003d volume.get(\u0027id\u0027)"},{"line_number":201,"context_line":"        LOG.debug("},{"line_number":202,"context_line":"            \u0027Creating new volume %(vol)s from snapshot %(snap)s \u0027"}],"source_content_type":"text/x-python","patch_set":4,"id":"9a41bdd9_ca1ce079","line":199,"updated":"2015-07-17 14:29:58.000000000","message":"This doesn\u0027t look right. The cgsnapshot_id field in snapshot is not the same as snapshot_id. cgsnapshot_id is for cgsnapshot. It is a foreign key in the consistencygroups table.  snapshot_id is for snapshot. It is a foreign key in the volumes table.\n\nSince you haven\u0027t implemented create_consistencygroup_from_src, you won\u0027t get cgsnapshot_id.  You only need line 199.","commit_id":"f1e6ddd59db1c1fe020a3ebe07e11694feeebb4b"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"c5bbaecbff9f09c96da6d3aa87d9a3ad6e246264","unresolved":false,"context_lines":[{"line_number":196,"context_line":"        src_volume_name \u003d snapshot.get(\u0027volume_id\u0027)"},{"line_number":197,"context_line":"        snapshot_id \u003d snapshot.get(\u0027cgsnapshot_id\u0027)"},{"line_number":198,"context_line":"        if not snapshot_id:"},{"line_number":199,"context_line":"            snapshot_id \u003d snapshot.get(\u0027id\u0027)"},{"line_number":200,"context_line":"        volume_name \u003d volume.get(\u0027id\u0027)"},{"line_number":201,"context_line":"        LOG.debug("},{"line_number":202,"context_line":"            \u0027Creating new volume %(vol)s from snapshot %(snap)s \u0027"}],"source_content_type":"text/x-python","patch_set":4,"id":"9a41bdd9_cb6dbd9a","line":199,"in_reply_to":"9a41bdd9_7a46bd50","updated":"2015-07-17 16:24:30.000000000","message":"Ok, this is probably not a problem. Can you add some comments here to explain when you need to use \u0027cgsnapshot_id\u0027 vs \u0027snapshot_id\u0027?","commit_id":"f1e6ddd59db1c1fe020a3ebe07e11694feeebb4b"},{"author":{"_account_id":12112,"name":"Tom Swanson","email":"tom_swanson@dell.com","username":"tomswanson"},"change_message_id":"2dcd623921437669c26206e36c9f843edad055b4","unresolved":false,"context_lines":[{"line_number":196,"context_line":"        src_volume_name \u003d snapshot.get(\u0027volume_id\u0027)"},{"line_number":197,"context_line":"        snapshot_id \u003d snapshot.get(\u0027cgsnapshot_id\u0027)"},{"line_number":198,"context_line":"        if not snapshot_id:"},{"line_number":199,"context_line":"            snapshot_id \u003d snapshot.get(\u0027id\u0027)"},{"line_number":200,"context_line":"        volume_name \u003d volume.get(\u0027id\u0027)"},{"line_number":201,"context_line":"        LOG.debug("},{"line_number":202,"context_line":"            \u0027Creating new volume %(vol)s from snapshot %(snap)s \u0027"}],"source_content_type":"text/x-python","patch_set":4,"id":"9a41bdd9_f784280c","line":199,"in_reply_to":"9a41bdd9_ca1ce079","updated":"2015-07-17 15:28:21.000000000","message":"But I do get it.  If I create a cgsnapshot and then try to create a volume from the volume snapshot that is created at that time it references a snapshot guid that I know nothing of.  The cgsnapshot_id I do know and can find on the Dell backend.","commit_id":"f1e6ddd59db1c1fe020a3ebe07e11694feeebb4b"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"e05772fd0860d68dde1b4243284502c9bfa9a78a","unresolved":false,"context_lines":[{"line_number":196,"context_line":"        src_volume_name \u003d snapshot.get(\u0027volume_id\u0027)"},{"line_number":197,"context_line":"        snapshot_id \u003d snapshot.get(\u0027cgsnapshot_id\u0027)"},{"line_number":198,"context_line":"        if not snapshot_id:"},{"line_number":199,"context_line":"            snapshot_id \u003d snapshot.get(\u0027id\u0027)"},{"line_number":200,"context_line":"        volume_name \u003d volume.get(\u0027id\u0027)"},{"line_number":201,"context_line":"        LOG.debug("},{"line_number":202,"context_line":"            \u0027Creating new volume %(vol)s from snapshot %(snap)s \u0027"}],"source_content_type":"text/x-python","patch_set":4,"id":"9a41bdd9_7a46bd50","line":199,"in_reply_to":"9a41bdd9_f784280c","updated":"2015-07-17 15:35:21.000000000","message":"Oh, okay, I see.  Sure, you\u0027ll get cgsnapshot_id this way, but why do you pass it as snapshot_id?  I don\u0027t get that.  cgsnapshot_id is different from snapshot_id.","commit_id":"f1e6ddd59db1c1fe020a3ebe07e11694feeebb4b"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"8fbb55b7c9f4e552c0e459d1ca2e0f05d18a2d34","unresolved":false,"context_lines":[{"line_number":511,"context_line":"            if profile:"},{"line_number":512,"context_line":"                LOG.debug(\u0027profile %s replayid %s\u0027, profile, snapshotid)"},{"line_number":513,"context_line":"                if api.snap_cg_replay(profile, snapshotid, 0):"},{"line_number":514,"context_line":"                    snapshots \u003d self.db.snapshot_get_all_for_cgsnapshot("},{"line_number":515,"context_line":"                        context,"},{"line_number":516,"context_line":"                        snapshotid)"},{"line_number":517,"context_line":"                    for snapshot in snapshots:"}],"source_content_type":"text/x-python","patch_set":7,"id":"3a50d1a3_8448df88","line":514,"updated":"2015-07-21 16:10:55.000000000","message":"See this bug: https://bugs.launchpad.net/cinder/+bug/1458125\n\nPlease change this to use snapshot object. Example: \n\nhttps://github.com/openstack/cinder/blob/master/cinder/volume/drivers/prophetstor/dplcommon.py#L924","commit_id":"8f0f2b42dc7ed0a0857f27432d5ec104d999c0bf"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"8fbb55b7c9f4e552c0e459d1ca2e0f05d18a2d34","unresolved":false,"context_lines":[{"line_number":553,"context_line":"                    raise exception.VolumeBackendAPIException("},{"line_number":554,"context_line":"                        _(\u0027Unable to delete Consistency Group snapshot %s\u0027) %"},{"line_number":555,"context_line":"                        snapshotid)"},{"line_number":556,"context_line":""},{"line_number":557,"context_line":"            snapshots \u003d self.db.snapshot_get_all_for_cgsnapshot(context,"},{"line_number":558,"context_line":"                                                                snapshotid)"},{"line_number":559,"context_line":""}],"source_content_type":"text/x-python","patch_set":7,"id":"3a50d1a3_a432bb0e","line":556,"updated":"2015-07-21 16:10:55.000000000","message":"Same here","commit_id":"8f0f2b42dc7ed0a0857f27432d5ec104d999c0bf"}]}
