)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":10628,"name":"Peter Wang","email":"peter.wang13@emc.com","username":"peter_wang"},"change_message_id":"b763e3421534de72df1286d81ced48bad1c11dfa","unresolved":false,"context_lines":[{"line_number":16,"context_line":"We try to account for this temporary snapshot in"},{"line_number":17,"context_line":"the delete volume action."},{"line_number":18,"context_line":""},{"line_number":19,"context_line":"Change-Id: I6dea01ce07387990aa38bd5106b51504739b3a6e"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":10,"id":"fa69d971_5639dcd5","line":19,"updated":"2016-01-06 07:14:10.000000000","message":"Is there a bug against this? if yes, would you please link to this.","commit_id":"bbe53f9469cc1ba2fc94efa34e082bdb85f9221e"},{"author":{"_account_id":5997,"name":"Walt","display_name":"Hemna","email":"waboring@hemna.com","username":"walter-boring","status":"SAP"},"change_message_id":"1395ea9a4dc6593e77582dd2531b3204959f295d","unresolved":false,"context_lines":[{"line_number":16,"context_line":"We try to account for this temporary snapshot in"},{"line_number":17,"context_line":"the delete volume action."},{"line_number":18,"context_line":""},{"line_number":19,"context_line":"Change-Id: I6dea01ce07387990aa38bd5106b51504739b3a6e"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":10,"id":"fa69d971_68f098c9","line":19,"in_reply_to":"fa69d971_5639dcd5","updated":"2016-01-07 00:09:19.000000000","message":"Done","commit_id":"bbe53f9469cc1ba2fc94efa34e082bdb85f9221e"}],"cinder/tests/unit/test_hpe3par.py":[{"author":{"_account_id":16917,"name":"Alex O\u0027Rourke","email":"alex.orourke@hpe.com","username":"aorourke"},"change_message_id":"9f297cb54ade44bdbe29a0ba04f7fab022820eb9","unresolved":false,"context_lines":[{"line_number":1442,"context_line":"                mock.call.createSnapshot(snap_name, vol_name, optional),"},{"line_number":1443,"context_line":"                mock.call.getVolume(snap_name),"},{"line_number":1444,"context_line":"                mock.call.getCPG(expected_cpg),"},{"line_number":1445,"context_line":"                mock.call.copyVolume("},{"line_number":1446,"context_line":"                    \u0027osv-0DM4qZEVSKON-AAAAAAAAA\u0027,"},{"line_number":1447,"context_line":"                    self.VOLUME_3PAR_NAME,"},{"line_number":1448,"context_line":"                    expected_cpg,"}],"source_content_type":"text/x-python","patch_set":6,"id":"7a740942_1abfbad1","line":1445,"updated":"2015-12-03 18:45:04.000000000","message":"When _create_temp_snapshot returns `self.client.getVolume(snap_name)`, the value is mocked out so this call fails. \n\n_create_temp_snapshot needs to be mocked to return a snapshot object with {\u0027name\u0027: \u0027osv-0DM4qZEVSKON-AAAAAAAAA\u0027} to match below, or the client call to getVolume can be mocked to return this dict.","commit_id":"8563971e64f0f2daee552030dfc797963092b95c"}],"cinder/volume/drivers/hpe/hpe_3par_common.py":[{"author":{"_account_id":10628,"name":"Peter Wang","email":"peter.wang13@emc.com","username":"peter_wang"},"change_message_id":"b763e3421534de72df1286d81ced48bad1c11dfa","unresolved":false,"context_lines":[{"line_number":1912,"context_line":"            self._copy_volume(snapshot[\u0027name\u0027], vol_name, cpg\u003dcpg,"},{"line_number":1913,"context_line":"                              snap_cpg\u003dtype_info[\u0027snap_cpg\u0027],"},{"line_number":1914,"context_line":"                              tpvv\u003dtype_info[\u0027tpvv\u0027],"},{"line_number":1915,"context_line":"                              tdvv\u003dtype_info[\u0027tdvv\u0027])"},{"line_number":1916,"context_line":""},{"line_number":1917,"context_line":"            # v2 replication check"},{"line_number":1918,"context_line":"            replication_flag \u003d False"}],"source_content_type":"text/x-python","patch_set":10,"id":"fa69d971_561f9c07","line":1915,"updated":"2016-01-06 07:14:10.000000000","message":"Why not putting snapshot deletion here after copy volume from the snapshot done?\n\ndefer the deletion to volume deletion looks a little wield and leave limitation to the source volume, for example, you may meet issues when migrating/retyping.","commit_id":"bbe53f9469cc1ba2fc94efa34e082bdb85f9221e"},{"author":{"_account_id":5997,"name":"Walt","display_name":"Hemna","email":"waboring@hemna.com","username":"walter-boring","status":"SAP"},"change_message_id":"fa438cbcd7f7ea40a95d6b15fa0808ef049ece07","unresolved":false,"context_lines":[{"line_number":1912,"context_line":"            self._copy_volume(snapshot[\u0027name\u0027], vol_name, cpg\u003dcpg,"},{"line_number":1913,"context_line":"                              snap_cpg\u003dtype_info[\u0027snap_cpg\u0027],"},{"line_number":1914,"context_line":"                              tpvv\u003dtype_info[\u0027tpvv\u0027],"},{"line_number":1915,"context_line":"                              tdvv\u003dtype_info[\u0027tdvv\u0027])"},{"line_number":1916,"context_line":""},{"line_number":1917,"context_line":"            # v2 replication check"},{"line_number":1918,"context_line":"            replication_flag \u003d False"}],"source_content_type":"text/x-python","patch_set":10,"id":"fa69d971_65052112","line":1915,"in_reply_to":"fa69d971_561f9c07","updated":"2016-01-06 22:15:28.000000000","message":"because the copy is done in the background and can take hours to complete.  Our driver kicks off the task and lets it go.  You can use the clone volume immediately.","commit_id":"bbe53f9469cc1ba2fc94efa34e082bdb85f9221e"},{"author":{"_account_id":16917,"name":"Alex O\u0027Rourke","email":"alex.orourke@hpe.com","username":"aorourke"},"change_message_id":"10acf15b68927aafca1f3f17d6be8df6902d8665","unresolved":false,"context_lines":[{"line_number":1994,"context_line":"                            \"You can try again later.\")"},{"line_number":1995,"context_line":"                    LOG.error(msg)"},{"line_number":1996,"context_line":"                    raise exception.VolumeIsBusy(message\u003dmsg)"},{"line_number":1997,"context_line":"                elif (ex.get_code() \u003d\u003d 32):"},{"line_number":1998,"context_line":""},{"line_number":1999,"context_line":"                    # see if we have any temp snapshots"},{"line_number":2000,"context_line":"                    snaps \u003d self.client.getVolumeSnapshots(volume_name)"}],"source_content_type":"text/x-python","patch_set":10,"id":"fa69d971_ce71be77","line":1997,"range":{"start_line":1997,"start_character":38,"end_line":1997,"end_character":42},"updated":"2016-01-05 23:54:18.000000000","message":"What is error 32? Volume has children error?\n\nCan you put a comment about when we would get this code?","commit_id":"bbe53f9469cc1ba2fc94efa34e082bdb85f9221e"},{"author":{"_account_id":5997,"name":"Walt","display_name":"Hemna","email":"waboring@hemna.com","username":"walter-boring","status":"SAP"},"change_message_id":"fa438cbcd7f7ea40a95d6b15fa0808ef049ece07","unresolved":false,"context_lines":[{"line_number":1994,"context_line":"                            \"You can try again later.\")"},{"line_number":1995,"context_line":"                    LOG.error(msg)"},{"line_number":1996,"context_line":"                    raise exception.VolumeIsBusy(message\u003dmsg)"},{"line_number":1997,"context_line":"                elif (ex.get_code() \u003d\u003d 32):"},{"line_number":1998,"context_line":""},{"line_number":1999,"context_line":"                    # see if we have any temp snapshots"},{"line_number":2000,"context_line":"                    snaps \u003d self.client.getVolumeSnapshots(volume_name)"}],"source_content_type":"text/x-python","patch_set":10,"id":"fa69d971_08223ca3","line":1997,"range":{"start_line":1997,"start_character":38,"end_line":1997,"end_character":42},"in_reply_to":"fa69d971_ce71be77","updated":"2016-01-06 22:15:28.000000000","message":"it\u0027s buried in the SDK documentation.  I\u0027ll add a comment.","commit_id":"bbe53f9469cc1ba2fc94efa34e082bdb85f9221e"},{"author":{"_account_id":16917,"name":"Alex O\u0027Rourke","email":"alex.orourke@hpe.com","username":"aorourke"},"change_message_id":"10acf15b68927aafca1f3f17d6be8df6902d8665","unresolved":false,"context_lines":[{"line_number":1997,"context_line":"                elif (ex.get_code() \u003d\u003d 32):"},{"line_number":1998,"context_line":""},{"line_number":1999,"context_line":"                    # see if we have any temp snapshots"},{"line_number":2000,"context_line":"                    snaps \u003d self.client.getVolumeSnapshots(volume_name)"},{"line_number":2001,"context_line":"                    for snap in snaps:"},{"line_number":2002,"context_line":"                        if \u0027tss-\u0027 in snap:"},{"line_number":2003,"context_line":"                            # looks like we found a temp snapshot."}],"source_content_type":"text/x-python","patch_set":10,"id":"fa69d971_6ebc5206","line":2000,"range":{"start_line":2000,"start_character":20,"end_line":2000,"end_character":71},"updated":"2016-01-05 23:54:18.000000000","message":"This client call will only be available in the newest release of the python-3parclient, so there should be a version check before this call is made.","commit_id":"bbe53f9469cc1ba2fc94efa34e082bdb85f9221e"},{"author":{"_account_id":5997,"name":"Walt","display_name":"Hemna","email":"waboring@hemna.com","username":"walter-boring","status":"SAP"},"change_message_id":"fa438cbcd7f7ea40a95d6b15fa0808ef049ece07","unresolved":false,"context_lines":[{"line_number":1997,"context_line":"                elif (ex.get_code() \u003d\u003d 32):"},{"line_number":1998,"context_line":""},{"line_number":1999,"context_line":"                    # see if we have any temp snapshots"},{"line_number":2000,"context_line":"                    snaps \u003d self.client.getVolumeSnapshots(volume_name)"},{"line_number":2001,"context_line":"                    for snap in snaps:"},{"line_number":2002,"context_line":"                        if \u0027tss-\u0027 in snap:"},{"line_number":2003,"context_line":"                            # looks like we found a temp snapshot."}],"source_content_type":"text/x-python","patch_set":10,"id":"fa69d971_e85568f9","line":2000,"range":{"start_line":2000,"start_character":20,"end_line":2000,"end_character":71},"in_reply_to":"fa69d971_6ebc5206","updated":"2016-01-06 22:15:28.000000000","message":"or we bump the minimum version of the client?","commit_id":"bbe53f9469cc1ba2fc94efa34e082bdb85f9221e"},{"author":{"_account_id":16917,"name":"Alex O\u0027Rourke","email":"alex.orourke@hpe.com","username":"aorourke"},"change_message_id":"10acf15b68927aafca1f3f17d6be8df6902d8665","unresolved":false,"context_lines":[{"line_number":1999,"context_line":"                    # see if we have any temp snapshots"},{"line_number":2000,"context_line":"                    snaps \u003d self.client.getVolumeSnapshots(volume_name)"},{"line_number":2001,"context_line":"                    for snap in snaps:"},{"line_number":2002,"context_line":"                        if \u0027tss-\u0027 in snap:"},{"line_number":2003,"context_line":"                            # looks like we found a temp snapshot."},{"line_number":2004,"context_line":"                            LOG.info("},{"line_number":2005,"context_line":"                                _LI(\"Found a temporary snapshot %(name)s\"),"}],"source_content_type":"text/x-python","patch_set":10,"id":"fa69d971_6e8e927a","line":2002,"range":{"start_line":2002,"start_character":24,"end_line":2002,"end_character":42},"updated":"2016-01-05 23:54:18.000000000","message":"if snap.startswith(\u0027tss-\u0027) might be a bit better on the extremely rare occasion the name encoding generated \u0027tss-\u0027 in the name.","commit_id":"bbe53f9469cc1ba2fc94efa34e082bdb85f9221e"},{"author":{"_account_id":5997,"name":"Walt","display_name":"Hemna","email":"waboring@hemna.com","username":"walter-boring","status":"SAP"},"change_message_id":"fa438cbcd7f7ea40a95d6b15fa0808ef049ece07","unresolved":false,"context_lines":[{"line_number":1999,"context_line":"                    # see if we have any temp snapshots"},{"line_number":2000,"context_line":"                    snaps \u003d self.client.getVolumeSnapshots(volume_name)"},{"line_number":2001,"context_line":"                    for snap in snaps:"},{"line_number":2002,"context_line":"                        if \u0027tss-\u0027 in snap:"},{"line_number":2003,"context_line":"                            # looks like we found a temp snapshot."},{"line_number":2004,"context_line":"                            LOG.info("},{"line_number":2005,"context_line":"                                _LI(\"Found a temporary snapshot %(name)s\"),"}],"source_content_type":"text/x-python","patch_set":10,"id":"fa69d971_0859dc34","line":2002,"range":{"start_line":2002,"start_character":24,"end_line":2002,"end_character":42},"in_reply_to":"fa69d971_6e8e927a","updated":"2016-01-06 22:15:28.000000000","message":"Done","commit_id":"bbe53f9469cc1ba2fc94efa34e082bdb85f9221e"},{"author":{"_account_id":16917,"name":"Alex O\u0027Rourke","email":"alex.orourke@hpe.com","username":"aorourke"},"change_message_id":"10acf15b68927aafca1f3f17d6be8df6902d8665","unresolved":false,"context_lines":[{"line_number":2004,"context_line":"                            LOG.info("},{"line_number":2005,"context_line":"                                _LI(\"Found a temporary snapshot %(name)s\"),"},{"line_number":2006,"context_line":"                                {\u0027name\u0027: snap})"},{"line_number":2007,"context_line":"                            self.client.deleteVolume(snap)"},{"line_number":2008,"context_line":""},{"line_number":2009,"context_line":"                    try:"},{"line_number":2010,"context_line":"                        self.delete_volume(volume)"}],"source_content_type":"text/x-python","patch_set":10,"id":"fa69d971_aefb2ac0","line":2007,"range":{"start_line":2007,"start_character":28,"end_line":2007,"end_character":58},"updated":"2016-01-05 23:54:18.000000000","message":"Can this ever fail and raise an exception?","commit_id":"bbe53f9469cc1ba2fc94efa34e082bdb85f9221e"},{"author":{"_account_id":5997,"name":"Walt","display_name":"Hemna","email":"waboring@hemna.com","username":"walter-boring","status":"SAP"},"change_message_id":"fa438cbcd7f7ea40a95d6b15fa0808ef049ece07","unresolved":false,"context_lines":[{"line_number":2004,"context_line":"                            LOG.info("},{"line_number":2005,"context_line":"                                _LI(\"Found a temporary snapshot %(name)s\"),"},{"line_number":2006,"context_line":"                                {\u0027name\u0027: snap})"},{"line_number":2007,"context_line":"                            self.client.deleteVolume(snap)"},{"line_number":2008,"context_line":""},{"line_number":2009,"context_line":"                    try:"},{"line_number":2010,"context_line":"                        self.delete_volume(volume)"}],"source_content_type":"text/x-python","patch_set":10,"id":"fa69d971_c8118453","line":2007,"range":{"start_line":2007,"start_character":28,"end_line":2007,"end_character":58},"in_reply_to":"fa69d971_aefb2ac0","updated":"2016-01-06 22:15:28.000000000","message":"It can fail and at that point, we can\u0027t really do anything if we can\u0027t remove the snap.  I suppose I can raise a VolumeIsBusy exception.","commit_id":"bbe53f9469cc1ba2fc94efa34e082bdb85f9221e"},{"author":{"_account_id":16917,"name":"Alex O\u0027Rourke","email":"alex.orourke@hpe.com","username":"aorourke"},"change_message_id":"53ecadc86e1e97df197f42221e2cc84ce3f8961c","unresolved":false,"context_lines":[{"line_number":71,"context_line":""},{"line_number":72,"context_line":"LOG \u003d logging.getLogger(__name__)"},{"line_number":73,"context_line":""},{"line_number":74,"context_line":"MIN_CLIENT_VERSION \u003d \u00274.0.0\u0027"},{"line_number":75,"context_line":"MIN_REP_CLIENT_VERSION \u003d \u00274.0.2\u0027"},{"line_number":76,"context_line":"DEDUP_API_VERSION \u003d 30201120"},{"line_number":77,"context_line":"FLASH_CACHE_API_VERSION \u003d 30201200"}],"source_content_type":"text/x-python","patch_set":13,"id":"da6ed579_9ed7bf22","line":74,"range":{"start_line":74,"start_character":21,"end_line":74,"end_character":28},"updated":"2016-01-13 16:35:37.000000000","message":"We should bump this to 4.1.0 for Mitaka","commit_id":"afbda41ae37b5dea917536b615783183604b5c10"},{"author":{"_account_id":5997,"name":"Walt","display_name":"Hemna","email":"waboring@hemna.com","username":"walter-boring","status":"SAP"},"change_message_id":"c4a2da50901f20b94b16a40bcc6882cb31517f04","unresolved":false,"context_lines":[{"line_number":71,"context_line":""},{"line_number":72,"context_line":"LOG \u003d logging.getLogger(__name__)"},{"line_number":73,"context_line":""},{"line_number":74,"context_line":"MIN_CLIENT_VERSION \u003d \u00274.0.0\u0027"},{"line_number":75,"context_line":"MIN_REP_CLIENT_VERSION \u003d \u00274.0.2\u0027"},{"line_number":76,"context_line":"DEDUP_API_VERSION \u003d 30201120"},{"line_number":77,"context_line":"FLASH_CACHE_API_VERSION \u003d 30201200"}],"source_content_type":"text/x-python","patch_set":13,"id":"da6ed579_cd533938","line":74,"range":{"start_line":74,"start_character":21,"end_line":74,"end_character":28},"in_reply_to":"da6ed579_9ed7bf22","updated":"2016-01-13 22:45:15.000000000","message":"Thanks Alex","commit_id":"afbda41ae37b5dea917536b615783183604b5c10"},{"author":{"_account_id":16917,"name":"Alex O\u0027Rourke","email":"alex.orourke@hpe.com","username":"aorourke"},"change_message_id":"53ecadc86e1e97df197f42221e2cc84ce3f8961c","unresolved":false,"context_lines":[{"line_number":2043,"context_line":"                    # Error 32 means that the volume has children"},{"line_number":2044,"context_line":""},{"line_number":2045,"context_line":"                    # see if we have any temp snapshots"},{"line_number":2046,"context_line":"                    snaps \u003d self.client.getVolumeSnapshots(volume_name)"},{"line_number":2047,"context_line":"                    for snap in snaps:"},{"line_number":2048,"context_line":"                        if snap.startswith(\u0027tss-\u0027):"},{"line_number":2049,"context_line":"                            # looks like we found a temp snapshot."}],"source_content_type":"text/x-python","patch_set":13,"id":"da6ed579_5e2aa72d","line":2046,"range":{"start_line":2046,"start_character":20,"end_line":2046,"end_character":71},"updated":"2016-01-13 16:35:37.000000000","message":"This call is only available in the newest 4.1.0 release of the python-3parclient. We should bump the minimum required version to 4.1.0 for the Mitaka release. If you bump the min client version in this patch, I can put a follow up patch removing all the other client version checks.","commit_id":"afbda41ae37b5dea917536b615783183604b5c10"},{"author":{"_account_id":5997,"name":"Walt","display_name":"Hemna","email":"waboring@hemna.com","username":"walter-boring","status":"SAP"},"change_message_id":"c4a2da50901f20b94b16a40bcc6882cb31517f04","unresolved":false,"context_lines":[{"line_number":2043,"context_line":"                    # Error 32 means that the volume has children"},{"line_number":2044,"context_line":""},{"line_number":2045,"context_line":"                    # see if we have any temp snapshots"},{"line_number":2046,"context_line":"                    snaps \u003d self.client.getVolumeSnapshots(volume_name)"},{"line_number":2047,"context_line":"                    for snap in snaps:"},{"line_number":2048,"context_line":"                        if snap.startswith(\u0027tss-\u0027):"},{"line_number":2049,"context_line":"                            # looks like we found a temp snapshot."}],"source_content_type":"text/x-python","patch_set":13,"id":"da6ed579_6d1a4d7f","line":2046,"range":{"start_line":2046,"start_character":20,"end_line":2046,"end_character":71},"in_reply_to":"da6ed579_5e2aa72d","updated":"2016-01-13 22:45:15.000000000","message":"Done","commit_id":"afbda41ae37b5dea917536b615783183604b5c10"},{"author":{"_account_id":6043,"name":"Kurt Martin","email":"kurt.f.martin@hpe.com","username":"kurt-f-martin"},"change_message_id":"7b645cbf53038a64a67f7a15fb4e74d51b3e8730","unresolved":false,"context_lines":[{"line_number":1946,"context_line":"        try:"},{"line_number":1947,"context_line":"            vol_name \u003d self._get_3par_vol_name(volume[\u0027id\u0027])"},{"line_number":1948,"context_line":"            # create a temporary snapshot"},{"line_number":1949,"context_line":"            LOG.info(_LI(\"Creating temporary snapshot\"))"},{"line_number":1950,"context_line":"            snapshot \u003d self._create_temp_snapshot(src_vref)"},{"line_number":1951,"context_line":""},{"line_number":1952,"context_line":"            type_info \u003d self.get_volume_settings_from_type(volume)"}],"source_content_type":"text/x-python","patch_set":14,"id":"5a5ae5dd_8ea4df08","line":1949,"range":{"start_line":1949,"start_character":12,"end_line":1949,"end_character":56},"updated":"2016-02-03 00:44:11.000000000","message":"Is this required? It doesn\u0027t provide any useful information since you will be logging a warning on line #1939 with some data.","commit_id":"b7346e4f2c62815b7cf25896aefe711574612daf"},{"author":{"_account_id":5997,"name":"Walt","display_name":"Hemna","email":"waboring@hemna.com","username":"walter-boring","status":"SAP"},"change_message_id":"22b5b76b8f065aaeca0ad467ff1035fe2a11173b","unresolved":false,"context_lines":[{"line_number":1946,"context_line":"        try:"},{"line_number":1947,"context_line":"            vol_name \u003d self._get_3par_vol_name(volume[\u0027id\u0027])"},{"line_number":1948,"context_line":"            # create a temporary snapshot"},{"line_number":1949,"context_line":"            LOG.info(_LI(\"Creating temporary snapshot\"))"},{"line_number":1950,"context_line":"            snapshot \u003d self._create_temp_snapshot(src_vref)"},{"line_number":1951,"context_line":""},{"line_number":1952,"context_line":"            type_info \u003d self.get_volume_settings_from_type(volume)"}],"source_content_type":"text/x-python","patch_set":14,"id":"5a5ae5dd_cee89719","line":1949,"range":{"start_line":1949,"start_character":12,"end_line":1949,"end_character":56},"in_reply_to":"5a5ae5dd_8ea4df08","updated":"2016-02-03 00:46:11.000000000","message":"Done","commit_id":"b7346e4f2c62815b7cf25896aefe711574612daf"},{"author":{"_account_id":12924,"name":"Patrick East","email":"east.patrick@gmail.com","username":"patrick.east"},"change_message_id":"ef5eb54b9b5e1293329cf2ef7f59097543e1a18b","unresolved":false,"context_lines":[{"line_number":2050,"context_line":"                            LOG.info("},{"line_number":2051,"context_line":"                                _LI(\"Found a temporary snapshot %(name)s\"),"},{"line_number":2052,"context_line":"                                {\u0027name\u0027: snap})"},{"line_number":2053,"context_line":"                            try:"},{"line_number":2054,"context_line":"                                self.client.deleteVolume(snap)"},{"line_number":2055,"context_line":"                            except Exception:"},{"line_number":2056,"context_line":"                                msg \u003d _(\"Volume has a temporary snapshot that \""},{"line_number":2057,"context_line":"                                        \"can\u0027t be deleted at this time.\")"},{"line_number":2058,"context_line":"                                raise exception.VolumeIsBusy(message\u003dmsg)"},{"line_number":2059,"context_line":""},{"line_number":2060,"context_line":"                    try:"},{"line_number":2061,"context_line":"                        self.delete_volume(volume)"}],"source_content_type":"text/x-python","patch_set":14,"id":"7a5de9d1_73c2c054","line":2058,"range":{"start_line":2053,"start_character":28,"end_line":2058,"end_character":73},"updated":"2016-02-02 00:51:35.000000000","message":"Do you want to special case the hpeexceptions.HTTPNotFound exception like in delete_snapshots()?","commit_id":"b7346e4f2c62815b7cf25896aefe711574612daf"},{"author":{"_account_id":5997,"name":"Walt","display_name":"Hemna","email":"waboring@hemna.com","username":"walter-boring","status":"SAP"},"change_message_id":"acda596043a0c2c40bb561f03632800fe655bb82","unresolved":false,"context_lines":[{"line_number":2050,"context_line":"                            LOG.info("},{"line_number":2051,"context_line":"                                _LI(\"Found a temporary snapshot %(name)s\"),"},{"line_number":2052,"context_line":"                                {\u0027name\u0027: snap})"},{"line_number":2053,"context_line":"                            try:"},{"line_number":2054,"context_line":"                                self.client.deleteVolume(snap)"},{"line_number":2055,"context_line":"                            except Exception:"},{"line_number":2056,"context_line":"                                msg \u003d _(\"Volume has a temporary snapshot that \""},{"line_number":2057,"context_line":"                                        \"can\u0027t be deleted at this time.\")"},{"line_number":2058,"context_line":"                                raise exception.VolumeIsBusy(message\u003dmsg)"},{"line_number":2059,"context_line":""},{"line_number":2060,"context_line":"                    try:"},{"line_number":2061,"context_line":"                        self.delete_volume(volume)"}],"source_content_type":"text/x-python","patch_set":14,"id":"7a5de9d1_e76471e6","line":2058,"range":{"start_line":2053,"start_character":28,"end_line":2058,"end_character":73},"in_reply_to":"7a5de9d1_54e89516","updated":"2016-02-02 21:46:53.000000000","message":"Thanks for the clarification in irc Patrick.   The point is that we could catch for HTTPNotFound and ignore it, since it\u0027s as good as a successful delete in this case.   I\u0027ll push up a new review that includes that.","commit_id":"b7346e4f2c62815b7cf25896aefe711574612daf"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"d8ad970f96d701d16e50822ff401f1e8970a72ce","unresolved":false,"context_lines":[{"line_number":2050,"context_line":"                            LOG.info("},{"line_number":2051,"context_line":"                                _LI(\"Found a temporary snapshot %(name)s\"),"},{"line_number":2052,"context_line":"                                {\u0027name\u0027: snap})"},{"line_number":2053,"context_line":"                            try:"},{"line_number":2054,"context_line":"                                self.client.deleteVolume(snap)"},{"line_number":2055,"context_line":"                            except Exception:"},{"line_number":2056,"context_line":"                                msg \u003d _(\"Volume has a temporary snapshot that \""},{"line_number":2057,"context_line":"                                        \"can\u0027t be deleted at this time.\")"},{"line_number":2058,"context_line":"                                raise exception.VolumeIsBusy(message\u003dmsg)"},{"line_number":2059,"context_line":""},{"line_number":2060,"context_line":"                    try:"},{"line_number":2061,"context_line":"                        self.delete_volume(volume)"}],"source_content_type":"text/x-python","patch_set":14,"id":"7a5de9d1_b93d792c","line":2058,"range":{"start_line":2053,"start_character":28,"end_line":2058,"end_character":73},"in_reply_to":"7a5de9d1_73c2c054","updated":"2016-02-02 02:18:24.000000000","message":"If this raises HTTPNotFound, it will be treated as a success case on line 2069 with just a warning.  With the above code, it will raise CinderException on line 2083.  I think the manager expects to catch a CinderException.","commit_id":"b7346e4f2c62815b7cf25896aefe711574612daf"},{"author":{"_account_id":5997,"name":"Walt","display_name":"Hemna","email":"waboring@hemna.com","username":"walter-boring","status":"SAP"},"change_message_id":"1787c92248ee023abf3acf458a804c617edd1343","unresolved":false,"context_lines":[{"line_number":2050,"context_line":"                            LOG.info("},{"line_number":2051,"context_line":"                                _LI(\"Found a temporary snapshot %(name)s\"),"},{"line_number":2052,"context_line":"                                {\u0027name\u0027: snap})"},{"line_number":2053,"context_line":"                            try:"},{"line_number":2054,"context_line":"                                self.client.deleteVolume(snap)"},{"line_number":2055,"context_line":"                            except Exception:"},{"line_number":2056,"context_line":"                                msg \u003d _(\"Volume has a temporary snapshot that \""},{"line_number":2057,"context_line":"                                        \"can\u0027t be deleted at this time.\")"},{"line_number":2058,"context_line":"                                raise exception.VolumeIsBusy(message\u003dmsg)"},{"line_number":2059,"context_line":""},{"line_number":2060,"context_line":"                    try:"},{"line_number":2061,"context_line":"                        self.delete_volume(volume)"}],"source_content_type":"text/x-python","patch_set":14,"id":"7a5de9d1_54e89516","line":2058,"range":{"start_line":2053,"start_character":28,"end_line":2058,"end_character":73},"in_reply_to":"7a5de9d1_85e34333","updated":"2016-02-02 21:24:30.000000000","message":"I\u0027m confused.  we catch all exceptions in the try block around self.client.deleteVolume().  Any exception will raise a VolumeIsBusy.","commit_id":"b7346e4f2c62815b7cf25896aefe711574612daf"},{"author":{"_account_id":12924,"name":"Patrick East","email":"east.patrick@gmail.com","username":"patrick.east"},"change_message_id":"429caa72d4f787464d67efea3e92aa293c4cf265","unresolved":false,"context_lines":[{"line_number":2050,"context_line":"                            LOG.info("},{"line_number":2051,"context_line":"                                _LI(\"Found a temporary snapshot %(name)s\"),"},{"line_number":2052,"context_line":"                                {\u0027name\u0027: snap})"},{"line_number":2053,"context_line":"                            try:"},{"line_number":2054,"context_line":"                                self.client.deleteVolume(snap)"},{"line_number":2055,"context_line":"                            except Exception:"},{"line_number":2056,"context_line":"                                msg \u003d _(\"Volume has a temporary snapshot that \""},{"line_number":2057,"context_line":"                                        \"can\u0027t be deleted at this time.\")"},{"line_number":2058,"context_line":"                                raise exception.VolumeIsBusy(message\u003dmsg)"},{"line_number":2059,"context_line":""},{"line_number":2060,"context_line":"                    try:"},{"line_number":2061,"context_line":"                        self.delete_volume(volume)"}],"source_content_type":"text/x-python","patch_set":14,"id":"7a5de9d1_a4db0c7b","line":2058,"range":{"start_line":2053,"start_character":28,"end_line":2058,"end_character":73},"in_reply_to":"7a5de9d1_a43f8cb2","updated":"2016-02-02 02:27:47.000000000","message":"Or I guess more to the point, if there is a HTTPNotFound, this loop could ignore it and keep processing snapshots in the list, not cause the volume deletion to stop from the cinder error.","commit_id":"b7346e4f2c62815b7cf25896aefe711574612daf"},{"author":{"_account_id":5997,"name":"Walt","display_name":"Hemna","email":"waboring@hemna.com","username":"walter-boring","status":"SAP"},"change_message_id":"4ee5396fd161f0b1d2ede77fe587365bc8d30d88","unresolved":false,"context_lines":[{"line_number":2050,"context_line":"                            LOG.info("},{"line_number":2051,"context_line":"                                _LI(\"Found a temporary snapshot %(name)s\"),"},{"line_number":2052,"context_line":"                                {\u0027name\u0027: snap})"},{"line_number":2053,"context_line":"                            try:"},{"line_number":2054,"context_line":"                                self.client.deleteVolume(snap)"},{"line_number":2055,"context_line":"                            except Exception:"},{"line_number":2056,"context_line":"                                msg \u003d _(\"Volume has a temporary snapshot that \""},{"line_number":2057,"context_line":"                                        \"can\u0027t be deleted at this time.\")"},{"line_number":2058,"context_line":"                                raise exception.VolumeIsBusy(message\u003dmsg)"},{"line_number":2059,"context_line":""},{"line_number":2060,"context_line":"                    try:"},{"line_number":2061,"context_line":"                        self.delete_volume(volume)"}],"source_content_type":"text/x-python","patch_set":14,"id":"7a5de9d1_afc3c089","line":2058,"range":{"start_line":2053,"start_character":28,"end_line":2058,"end_character":73},"in_reply_to":"7a5de9d1_a4db0c7b","updated":"2016-02-02 16:30:10.000000000","message":"If we get any exception, for deleteVolume here, we\u0027ll raise VolumeIsBusy, which should get caught again on line 2081, which will raise a CinderException.   This seems correct to me?","commit_id":"b7346e4f2c62815b7cf25896aefe711574612daf"},{"author":{"_account_id":12924,"name":"Patrick East","email":"east.patrick@gmail.com","username":"patrick.east"},"change_message_id":"75abb7938c09c1f8fa43caa11fa7df7d79f706a2","unresolved":false,"context_lines":[{"line_number":2050,"context_line":"                            LOG.info("},{"line_number":2051,"context_line":"                                _LI(\"Found a temporary snapshot %(name)s\"),"},{"line_number":2052,"context_line":"                                {\u0027name\u0027: snap})"},{"line_number":2053,"context_line":"                            try:"},{"line_number":2054,"context_line":"                                self.client.deleteVolume(snap)"},{"line_number":2055,"context_line":"                            except Exception:"},{"line_number":2056,"context_line":"                                msg \u003d _(\"Volume has a temporary snapshot that \""},{"line_number":2057,"context_line":"                                        \"can\u0027t be deleted at this time.\")"},{"line_number":2058,"context_line":"                                raise exception.VolumeIsBusy(message\u003dmsg)"},{"line_number":2059,"context_line":""},{"line_number":2060,"context_line":"                    try:"},{"line_number":2061,"context_line":"                        self.delete_volume(volume)"}],"source_content_type":"text/x-python","patch_set":14,"id":"7a5de9d1_85e34333","line":2058,"range":{"start_line":2053,"start_character":28,"end_line":2058,"end_character":73},"in_reply_to":"7a5de9d1_afc3c089","updated":"2016-02-02 17:02:03.000000000","message":"Yea, i guess my point was if this exception was the HTTPNotFound then it could be ignored and the volume deletion could potentially still be a success, right?\n\nNot a big deal though, probably unlikely that the situation ever happens anyway.","commit_id":"b7346e4f2c62815b7cf25896aefe711574612daf"},{"author":{"_account_id":12924,"name":"Patrick East","email":"east.patrick@gmail.com","username":"patrick.east"},"change_message_id":"8406197deb96428a5db5ec7c0aa7b80793771961","unresolved":false,"context_lines":[{"line_number":2050,"context_line":"                            LOG.info("},{"line_number":2051,"context_line":"                                _LI(\"Found a temporary snapshot %(name)s\"),"},{"line_number":2052,"context_line":"                                {\u0027name\u0027: snap})"},{"line_number":2053,"context_line":"                            try:"},{"line_number":2054,"context_line":"                                self.client.deleteVolume(snap)"},{"line_number":2055,"context_line":"                            except Exception:"},{"line_number":2056,"context_line":"                                msg \u003d _(\"Volume has a temporary snapshot that \""},{"line_number":2057,"context_line":"                                        \"can\u0027t be deleted at this time.\")"},{"line_number":2058,"context_line":"                                raise exception.VolumeIsBusy(message\u003dmsg)"},{"line_number":2059,"context_line":""},{"line_number":2060,"context_line":"                    try:"},{"line_number":2061,"context_line":"                        self.delete_volume(volume)"}],"source_content_type":"text/x-python","patch_set":14,"id":"7a5de9d1_a43f8cb2","line":2058,"range":{"start_line":2053,"start_character":28,"end_line":2058,"end_character":73},"in_reply_to":"7a5de9d1_b93d792c","updated":"2016-02-02 02:24:19.000000000","message":"Ah, maybe I should be more specific. I meant if the self.client.deleteVolume(..) here on line 2054 for the temporary snapshot raises the HTTPNotFound it would be caught here on 2055, and a VolumeIsBusy is raised instead. The one down on 2069 is for the original volumeDelete up on line 1998.","commit_id":"b7346e4f2c62815b7cf25896aefe711574612daf"},{"author":{"_account_id":12924,"name":"Patrick East","email":"east.patrick@gmail.com","username":"patrick.east"},"change_message_id":"ef5eb54b9b5e1293329cf2ef7f59097543e1a18b","unresolved":false,"context_lines":[{"line_number":2057,"context_line":"                                        \"can\u0027t be deleted at this time.\")"},{"line_number":2058,"context_line":"                                raise exception.VolumeIsBusy(message\u003dmsg)"},{"line_number":2059,"context_line":""},{"line_number":2060,"context_line":"                    try:"},{"line_number":2061,"context_line":"                        self.delete_volume(volume)"},{"line_number":2062,"context_line":"                    except Exception:"},{"line_number":2063,"context_line":"                        msg \u003d _(\"Volume has children and cannot be deleted!\")"},{"line_number":2064,"context_line":"                        raise exception.VolumeIsBusy(message\u003dmsg)"},{"line_number":2065,"context_line":"                else:"},{"line_number":2066,"context_line":"                    LOG.error(_LE(\"Exception: %s\"), ex)"},{"line_number":2067,"context_line":"                    raise exception.VolumeIsBusy(message\u003dex.get_description())"}],"source_content_type":"text/x-python","patch_set":14,"id":"7a5de9d1_13d6ec27","line":2064,"range":{"start_line":2060,"start_character":20,"end_line":2064,"end_character":65},"updated":"2016-02-02 00:51:35.000000000","message":"Shouldn\u0027t this only run if all of the snapshots in \"snaps\" were temporary? Could avoid an extra call here by keeping count.\n\nProbably also don\u0027t really want to catch all exceptions and have this error message if, for example, you now got a different error code. Seems like you would really want to do this same kind check s that are done the first time this is called (well, except maybe for the 32 error).","commit_id":"b7346e4f2c62815b7cf25896aefe711574612daf"},{"author":{"_account_id":12924,"name":"Patrick East","email":"east.patrick@gmail.com","username":"patrick.east"},"change_message_id":"75abb7938c09c1f8fa43caa11fa7df7d79f706a2","unresolved":false,"context_lines":[{"line_number":2057,"context_line":"                                        \"can\u0027t be deleted at this time.\")"},{"line_number":2058,"context_line":"                                raise exception.VolumeIsBusy(message\u003dmsg)"},{"line_number":2059,"context_line":""},{"line_number":2060,"context_line":"                    try:"},{"line_number":2061,"context_line":"                        self.delete_volume(volume)"},{"line_number":2062,"context_line":"                    except Exception:"},{"line_number":2063,"context_line":"                        msg \u003d _(\"Volume has children and cannot be deleted!\")"},{"line_number":2064,"context_line":"                        raise exception.VolumeIsBusy(message\u003dmsg)"},{"line_number":2065,"context_line":"                else:"},{"line_number":2066,"context_line":"                    LOG.error(_LE(\"Exception: %s\"), ex)"},{"line_number":2067,"context_line":"                    raise exception.VolumeIsBusy(message\u003dex.get_description())"}],"source_content_type":"text/x-python","patch_set":14,"id":"7a5de9d1_05ce73b4","line":2064,"range":{"start_line":2060,"start_character":20,"end_line":2064,"end_character":65},"in_reply_to":"7a5de9d1_0fe1b4fe","updated":"2016-02-02 17:02:03.000000000","message":"Sounds good to me.","commit_id":"b7346e4f2c62815b7cf25896aefe711574612daf"},{"author":{"_account_id":5997,"name":"Walt","display_name":"Hemna","email":"waboring@hemna.com","username":"walter-boring","status":"SAP"},"change_message_id":"4ee5396fd161f0b1d2ede77fe587365bc8d30d88","unresolved":false,"context_lines":[{"line_number":2057,"context_line":"                                        \"can\u0027t be deleted at this time.\")"},{"line_number":2058,"context_line":"                                raise exception.VolumeIsBusy(message\u003dmsg)"},{"line_number":2059,"context_line":""},{"line_number":2060,"context_line":"                    try:"},{"line_number":2061,"context_line":"                        self.delete_volume(volume)"},{"line_number":2062,"context_line":"                    except Exception:"},{"line_number":2063,"context_line":"                        msg \u003d _(\"Volume has children and cannot be deleted!\")"},{"line_number":2064,"context_line":"                        raise exception.VolumeIsBusy(message\u003dmsg)"},{"line_number":2065,"context_line":"                else:"},{"line_number":2066,"context_line":"                    LOG.error(_LE(\"Exception: %s\"), ex)"},{"line_number":2067,"context_line":"                    raise exception.VolumeIsBusy(message\u003dex.get_description())"}],"source_content_type":"text/x-python","patch_set":14,"id":"7a5de9d1_0fe1b4fe","line":2064,"range":{"start_line":2060,"start_character":20,"end_line":2064,"end_character":65},"in_reply_to":"7a5de9d1_13d6ec27","updated":"2016-02-02 16:30:10.000000000","message":"This is the case where we deleted all of the known temporary snaps.  I guess if there are others left, then we could just not try delete_volume again, and raise the same exception, but there could be snapshots that are in process, and/or busy in background tasks.  I think it\u0027s just safer to forcibly call delete_volume here and let the exception happen.","commit_id":"b7346e4f2c62815b7cf25896aefe711574612daf"}]}
