)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":22664,"name":"William Durairaj","email":"william.dur.sandanaraj@hpe.com","username":"william.durairaj"},"change_message_id":"f4ff830326832d2c43ae726673807e64f7f8e8da","unresolved":false,"context_lines":[{"line_number":7,"context_line":"3PAR: Fixed image cache enabled capability."},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"This patch fixes the problem with the 3PAR not"},{"line_number":10,"context_line":"working with the generic image cache."},{"line_number":11,"context_line":""},{"line_number":12,"context_line":"In order to do the image cache, the 3PAR has to create a"},{"line_number":13,"context_line":"temporary snapshot of the volume being cloned.  Then the"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":1,"id":"5ff73747_830302bf","line":10,"range":{"start_line":10,"start_character":36,"end_line":10,"end_character":37},"updated":"2017-05-02 12:13:28.000000000","message":"We can add more information stating \"generic image cache during cache-miss scenario\"","commit_id":"a1dc3c57ee5a5fd024fc2fa67fa655bffc50201d"},{"author":{"_account_id":22664,"name":"William Durairaj","email":"william.dur.sandanaraj@hpe.com","username":"william.durairaj"},"change_message_id":"f4ff830326832d2c43ae726673807e64f7f8e8da","unresolved":false,"context_lines":[{"line_number":9,"context_line":"This patch fixes the problem with the 3PAR not"},{"line_number":10,"context_line":"working with the generic image cache."},{"line_number":11,"context_line":""},{"line_number":12,"context_line":"In order to do the image cache, the 3PAR has to create a"},{"line_number":13,"context_line":"temporary snapshot of the volume being cloned.  Then the"},{"line_number":14,"context_line":"background cloning is against the temporary snapshot."},{"line_number":15,"context_line":"The problem is, the temporary snapshot stays around."}],"source_content_type":"text/x-gerrit-commit-message","patch_set":1,"id":"5ff73747_2312ee0a","line":12,"range":{"start_line":12,"start_character":25,"end_line":12,"end_character":30},"updated":"2017-05-02 12:13:28.000000000","message":"cache -\u003e caching","commit_id":"a1dc3c57ee5a5fd024fc2fa67fa655bffc50201d"}],"cinder/volume/drivers/hpe/hpe_3par_common.py":[{"author":{"_account_id":22664,"name":"William Durairaj","email":"william.dur.sandanaraj@hpe.com","username":"william.durairaj"},"change_message_id":"b0af26a133b4005a87732f290f02990376814fab","unresolved":false,"context_lines":[{"line_number":266,"context_line":""},{"line_number":267,"context_line":"    \"\"\""},{"line_number":268,"context_line":""},{"line_number":269,"context_line":"    VERSION \u003d \"3.0.36\""},{"line_number":270,"context_line":""},{"line_number":271,"context_line":"    stats \u003d {}"},{"line_number":272,"context_line":""}],"source_content_type":"text/x-python","patch_set":11,"id":"ff346bd7_fd02e908","line":269,"updated":"2017-07-26 06:27:29.000000000","message":"This should be 3.0.37","commit_id":"bd1894b49bd16b8cade632fd7daf7a42f82fabdf"},{"author":{"_account_id":16212,"name":"Chuck Fouts","email":"fchuck@netapp.com","username":"cFouts"},"change_message_id":"d3dd8a4c3e818840b01b3023b59e142daf8a061d","unresolved":false,"context_lines":[{"line_number":3083,"context_line":"            except Exception:"},{"line_number":3084,"context_line":"                msg \u003d _(\"Volume has a temporary snapshot that \""},{"line_number":3085,"context_line":"                        \"can\u0027t be deleted at this time.\")"},{"line_number":3086,"context_line":"                raise exception.VolumeIsBusy(message\u003dmsg)"},{"line_number":3087,"context_line":""},{"line_number":3088,"context_line":"    def find_existing_vlun(self, volume, host):"},{"line_number":3089,"context_line":"        \"\"\"Finds an existing VLUN for a volume on a host."}],"source_content_type":"text/x-python","patch_set":11,"id":"ff346bd7_3ea32e52","line":3086,"range":{"start_line":3086,"start_character":16,"end_line":3086,"end_character":56},"updated":"2017-07-22 15:47:03.000000000","message":"Instead of raising an exception could you mark the snapshot for deletion at a later time? A periodic task could find and clean up snapshots marked for deletion.","commit_id":"bd1894b49bd16b8cade632fd7daf7a42f82fabdf"},{"author":{"_account_id":16212,"name":"Chuck Fouts","email":"fchuck@netapp.com","username":"cFouts"},"change_message_id":"67e944abc32b6e8ece468e5e25592d1c09cc3f09","unresolved":false,"context_lines":[{"line_number":3083,"context_line":"            except Exception:"},{"line_number":3084,"context_line":"                msg \u003d _(\"Volume has a temporary snapshot that \""},{"line_number":3085,"context_line":"                        \"can\u0027t be deleted at this time.\")"},{"line_number":3086,"context_line":"                raise exception.VolumeIsBusy(message\u003dmsg)"},{"line_number":3087,"context_line":""},{"line_number":3088,"context_line":"    def find_existing_vlun(self, volume, host):"},{"line_number":3089,"context_line":"        \"\"\"Finds an existing VLUN for a volume on a host."}],"source_content_type":"text/x-python","patch_set":11,"id":"ff346bd7_45195ad5","line":3086,"range":{"start_line":3086,"start_character":16,"end_line":3086,"end_character":56},"in_reply_to":"ff346bd7_0e84a75d","updated":"2017-07-24 16:49:48.000000000","message":"Okay, that makes sense. I see now where you catch and log the exception.","commit_id":"bd1894b49bd16b8cade632fd7daf7a42f82fabdf"},{"author":{"_account_id":21407,"name":"Kushal Wathore","email":"kushal.wathore@hpe.com","username":"kwathore"},"change_message_id":"4aeee578a0e4db19e1a01df32c2936e7159abc91","unresolved":false,"context_lines":[{"line_number":3083,"context_line":"            except Exception:"},{"line_number":3084,"context_line":"                msg \u003d _(\"Volume has a temporary snapshot that \""},{"line_number":3085,"context_line":"                        \"can\u0027t be deleted at this time.\")"},{"line_number":3086,"context_line":"                raise exception.VolumeIsBusy(message\u003dmsg)"},{"line_number":3087,"context_line":""},{"line_number":3088,"context_line":"    def find_existing_vlun(self, volume, host):"},{"line_number":3089,"context_line":"        \"\"\"Finds an existing VLUN for a volume on a host."}],"source_content_type":"text/x-python","patch_set":11,"id":"ff346bd7_0e84a75d","line":3086,"range":{"start_line":3086,"start_character":16,"end_line":3086,"end_character":56},"in_reply_to":"ff346bd7_3ea32e52","updated":"2017-07-24 06:57:10.000000000","message":"Thanks Chuck for review,\nOur client delete a snapshot when there no snapshot on it.\nif a snapshot has a snapshot on it then we explicitly do not want to delete snapshot. hence we are raising volume busy exception here.","commit_id":"bd1894b49bd16b8cade632fd7daf7a42f82fabdf"},{"author":{"_account_id":1736,"name":"Ivan Kolodyazhny","email":"e0ne@e0ne.info","username":"e0ne"},"change_message_id":"1ed2499d86d7cfb210ba59bab1c761582f04e50e","unresolved":false,"context_lines":[{"line_number":3065,"context_line":"    def remove_temporary_snapshots(self, volume):"},{"line_number":3066,"context_line":"        vol_name \u003d self._get_3par_vol_name(volume[\u0027id\u0027])"},{"line_number":3067,"context_line":"        snapshots_list \u003d self.client.getVolumeSnapshots(vol_name)"},{"line_number":3068,"context_line":"        tmp_snapshots_list \u003d []"},{"line_number":3069,"context_line":"        tmp_snapshots_list \u003d [snap"},{"line_number":3070,"context_line":"                              for snap in snapshots_list"},{"line_number":3071,"context_line":"                              if snap.startswith(\u0027tss-\u0027)]"}],"source_content_type":"text/x-python","patch_set":13,"id":"df3967d1_1d58e0f7","line":3068,"updated":"2017-08-03 13:27:47.000000000","message":"We don\u0027t need this line. Please, remove it","commit_id":"899202a7290751773de989986741c9387d8b079c"},{"author":{"_account_id":21407,"name":"Kushal Wathore","email":"kushal.wathore@hpe.com","username":"kwathore"},"change_message_id":"0197dc4a22d10f330ea93f38dc1f3545b5b4ee4f","unresolved":false,"context_lines":[{"line_number":3065,"context_line":"    def remove_temporary_snapshots(self, volume):"},{"line_number":3066,"context_line":"        vol_name \u003d self._get_3par_vol_name(volume[\u0027id\u0027])"},{"line_number":3067,"context_line":"        snapshots_list \u003d self.client.getVolumeSnapshots(vol_name)"},{"line_number":3068,"context_line":"        tmp_snapshots_list \u003d []"},{"line_number":3069,"context_line":"        tmp_snapshots_list \u003d [snap"},{"line_number":3070,"context_line":"                              for snap in snapshots_list"},{"line_number":3071,"context_line":"                              if snap.startswith(\u0027tss-\u0027)]"}],"source_content_type":"text/x-python","patch_set":13,"id":"df3967d1_bd167348","line":3068,"in_reply_to":"df3967d1_1d58e0f7","updated":"2017-08-03 13:49:50.000000000","message":"my bad,\ndone the changes","commit_id":"899202a7290751773de989986741c9387d8b079c"},{"author":{"_account_id":1736,"name":"Ivan Kolodyazhny","email":"e0ne@e0ne.info","username":"e0ne"},"change_message_id":"1ed2499d86d7cfb210ba59bab1c761582f04e50e","unresolved":false,"context_lines":[{"line_number":3080,"context_line":"                # if the volume is gone, it\u0027s as good as a"},{"line_number":3081,"context_line":"                # successful delete"},{"line_number":3082,"context_line":"                pass"},{"line_number":3083,"context_line":"            except Exception:"},{"line_number":3084,"context_line":"                msg \u003d _(\"Volume has a temporary snapshot that \""},{"line_number":3085,"context_line":"                        \"can\u0027t be deleted at this time.\")"},{"line_number":3086,"context_line":"                raise exception.VolumeIsBusy(message\u003dmsg)"}],"source_content_type":"text/x-python","patch_set":13,"id":"df3967d1_9d6bb083","line":3083,"updated":"2017-08-03 13:27:47.000000000","message":"Can we handle less generic exception here?","commit_id":"899202a7290751773de989986741c9387d8b079c"},{"author":{"_account_id":21407,"name":"Kushal Wathore","email":"kushal.wathore@hpe.com","username":"kwathore"},"change_message_id":"0197dc4a22d10f330ea93f38dc1f3545b5b4ee4f","unresolved":false,"context_lines":[{"line_number":3080,"context_line":"                # if the volume is gone, it\u0027s as good as a"},{"line_number":3081,"context_line":"                # successful delete"},{"line_number":3082,"context_line":"                pass"},{"line_number":3083,"context_line":"            except Exception:"},{"line_number":3084,"context_line":"                msg \u003d _(\"Volume has a temporary snapshot that \""},{"line_number":3085,"context_line":"                        \"can\u0027t be deleted at this time.\")"},{"line_number":3086,"context_line":"                raise exception.VolumeIsBusy(message\u003dmsg)"}],"source_content_type":"text/x-python","patch_set":13,"id":"df3967d1_dd6017d2","line":3083,"in_reply_to":"df3967d1_9d6bb083","updated":"2017-08-03 13:49:50.000000000","message":"Thanks Ivan for review.\nwe have 3 to 4 exception that all means we do not not want to delete a volume hence keep generic over here for all that 3 exceptions.","commit_id":"899202a7290751773de989986741c9387d8b079c"},{"author":{"_account_id":170,"name":"Mike Perez","email":"thingee@gmail.com","username":"thingee"},"change_message_id":"3a2d29a6f0f9838f198826d3812848c2e963b39a","unresolved":false,"context_lines":[{"line_number":3071,"context_line":"        LOG.debug(\"temporary snapshot list %(name)s\","},{"line_number":3072,"context_line":"                  {\u0027name\u0027: tmp_snapshots_list})"},{"line_number":3073,"context_line":"        for temp_snap in tmp_snapshots_list:"},{"line_number":3074,"context_line":"            LOG.info(\"Found a temporary snapshot %(name)s\","},{"line_number":3075,"context_line":"                     {\u0027name\u0027: temp_snap})"},{"line_number":3076,"context_line":"            try:"},{"line_number":3077,"context_line":"                self.client.deleteVolume(temp_snap)"}],"source_content_type":"text/x-python","patch_set":14,"id":"df3967d1_863d9c90","line":3074,"updated":"2017-08-03 15:04:02.000000000","message":"is this really useful to keep telling the operator? I think this is more of a debug level.","commit_id":"d6fba8f16743d757020bf2f3ed516fe1d139484d"},{"author":{"_account_id":21407,"name":"Kushal Wathore","email":"kushal.wathore@hpe.com","username":"kwathore"},"change_message_id":"1a86af5c9bdb859ac5c7352de72d2604fa8b63c0","unresolved":false,"context_lines":[{"line_number":3071,"context_line":"        LOG.debug(\"temporary snapshot list %(name)s\","},{"line_number":3072,"context_line":"                  {\u0027name\u0027: tmp_snapshots_list})"},{"line_number":3073,"context_line":"        for temp_snap in tmp_snapshots_list:"},{"line_number":3074,"context_line":"            LOG.info(\"Found a temporary snapshot %(name)s\","},{"line_number":3075,"context_line":"                     {\u0027name\u0027: temp_snap})"},{"line_number":3076,"context_line":"            try:"},{"line_number":3077,"context_line":"                self.client.deleteVolume(temp_snap)"}],"source_content_type":"text/x-python","patch_set":14,"id":"9f436f4f_60d2125f","line":3074,"in_reply_to":"df3967d1_863d9c90","updated":"2017-08-09 12:00:51.000000000","message":"Yes Mike, you are right.\nDone the changes","commit_id":"d6fba8f16743d757020bf2f3ed516fe1d139484d"},{"author":{"_account_id":170,"name":"Mike Perez","email":"thingee@gmail.com","username":"thingee"},"change_message_id":"3a2d29a6f0f9838f198826d3812848c2e963b39a","unresolved":false,"context_lines":[{"line_number":3080,"context_line":"                # successful delete"},{"line_number":3081,"context_line":"                pass"},{"line_number":3082,"context_line":"            except Exception:"},{"line_number":3083,"context_line":"                msg \u003d _(\"Volume has a temporary snapshot that \""},{"line_number":3084,"context_line":"                        \"can\u0027t be deleted at this time.\")"},{"line_number":3085,"context_line":"                raise exception.VolumeIsBusy(message\u003dmsg)"},{"line_number":3086,"context_line":""}],"source_content_type":"text/x-python","patch_set":14,"id":"df3967d1_8666bcc0","line":3083,"updated":"2017-08-03 15:04:02.000000000","message":"This in my opinion will suffice.","commit_id":"d6fba8f16743d757020bf2f3ed516fe1d139484d"},{"author":{"_account_id":21407,"name":"Kushal Wathore","email":"kushal.wathore@hpe.com","username":"kwathore"},"change_message_id":"1a86af5c9bdb859ac5c7352de72d2604fa8b63c0","unresolved":false,"context_lines":[{"line_number":3080,"context_line":"                # successful delete"},{"line_number":3081,"context_line":"                pass"},{"line_number":3082,"context_line":"            except Exception:"},{"line_number":3083,"context_line":"                msg \u003d _(\"Volume has a temporary snapshot that \""},{"line_number":3084,"context_line":"                        \"can\u0027t be deleted at this time.\")"},{"line_number":3085,"context_line":"                raise exception.VolumeIsBusy(message\u003dmsg)"},{"line_number":3086,"context_line":""}],"source_content_type":"text/x-python","patch_set":14,"id":"9f436f4f_40d70e4d","line":3083,"in_reply_to":"df3967d1_8666bcc0","updated":"2017-08-09 12:00:51.000000000","message":":) Done","commit_id":"d6fba8f16743d757020bf2f3ed516fe1d139484d"},{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"3ce26535515360dd588f59ffe0854b24c1c4fbb4","unresolved":false,"context_lines":[{"line_number":3080,"context_line":"                # successful delete"},{"line_number":3081,"context_line":"                pass"},{"line_number":3082,"context_line":"            except Exception:"},{"line_number":3083,"context_line":"                msg \u003d _(\"Volume has a temporary snapshot.\")"},{"line_number":3084,"context_line":"                raise exception.VolumeIsBusy(message\u003dmsg)"},{"line_number":3085,"context_line":""},{"line_number":3086,"context_line":"    def find_existing_vlun(self, volume, host):"}],"source_content_type":"text/x-python","patch_set":15,"id":"9f436f4f_89f07acb","line":3083,"updated":"2017-08-09 16:44:43.000000000","message":"We are currently in string freeze, so not we really should try to avoid this. It\u0027s a simple string though, so maybe we are fine.","commit_id":"d707d5a9f75e7d221acffcaca9f8add5f9483477"}]}
