)]}'
{"cinder/tests/unit/test_volume.py":[{"author":{"_account_id":9535,"name":"Gorka Eguileor","email":"geguileo@redhat.com","username":"Gorka"},"change_message_id":"6f500fc573e0524f54917c6d061e1316f4d5b1fc","unresolved":false,"context_lines":[{"line_number":432,"context_line":"        # get_pool method, which in the legacy case is going"},{"line_number":433,"context_line":"        # to be volume_backend_name or None"},{"line_number":434,"context_line":""},{"line_number":435,"context_line":"        vol0_db \u003d db.volume_get(context.get_admin_context(), vol0[\u0027id\u0027])"},{"line_number":436,"context_line":"        self.assertEqual(volutils.append_host(CONF.host, \u0027LVM\u0027),"},{"line_number":437,"context_line":"                         vol0_db[\u0027host\u0027])"},{"line_number":438,"context_line":"        self.volume.delete_volume(self.context, vol0[\u0027id\u0027], volume\u003dvol0)"}],"source_content_type":"text/x-python","patch_set":11,"id":"dab17558_1d1a926e","line":435,"range":{"start_line":435,"start_character":61,"end_line":435,"end_character":71},"updated":"2016-05-09 18:24:17.000000000","message":"nit: vol0.id","commit_id":"40175d8cdc33aac63d675b3de5ac357b5e8b35e9"},{"author":{"_account_id":9535,"name":"Gorka Eguileor","email":"geguileo@redhat.com","username":"Gorka"},"change_message_id":"6f500fc573e0524f54917c6d061e1316f4d5b1fc","unresolved":false,"context_lines":[{"line_number":434,"context_line":""},{"line_number":435,"context_line":"        vol0_db \u003d db.volume_get(context.get_admin_context(), vol0[\u0027id\u0027])"},{"line_number":436,"context_line":"        self.assertEqual(volutils.append_host(CONF.host, \u0027LVM\u0027),"},{"line_number":437,"context_line":"                         vol0_db[\u0027host\u0027])"},{"line_number":438,"context_line":"        self.volume.delete_volume(self.context, vol0[\u0027id\u0027], volume\u003dvol0)"},{"line_number":439,"context_line":"        self.volume.delete_volume(self.context, vol1[\u0027id\u0027], volume\u003dvol1)"},{"line_number":440,"context_line":"        self.volume.delete_volume(self.context, vol2[\u0027id\u0027], volume\u003dvol2)"}],"source_content_type":"text/x-python","patch_set":11,"id":"dab17558_9d24c2af","line":437,"range":{"start_line":437,"start_character":25,"end_line":437,"end_character":40},"updated":"2016-05-09 18:24:17.000000000","message":"nit: vol0_db.host","commit_id":"40175d8cdc33aac63d675b3de5ac357b5e8b35e9"},{"author":{"_account_id":9535,"name":"Gorka Eguileor","email":"geguileo@redhat.com","username":"Gorka"},"change_message_id":"6f500fc573e0524f54917c6d061e1316f4d5b1fc","unresolved":false,"context_lines":[{"line_number":506,"context_line":"            volume_id \u003d volume[\u0027id\u0027]"},{"line_number":507,"context_line":"            self.volume.init_host()"},{"line_number":508,"context_line":"            vol_db \u003d db.volume_get(context.get_admin_context(), volume_id)"},{"line_number":509,"context_line":"            self.assertEqual(\u0027error\u0027, vol_db[\u0027status\u0027])"},{"line_number":510,"context_line":"            self.volume.delete_volume(self.context, volume_id, volume\u003dvolume)"},{"line_number":511,"context_line":""},{"line_number":512,"context_line":"    def test_create_snapshot_fails_with_creating_status(self):"}],"source_content_type":"text/x-python","patch_set":11,"id":"dab17558_7d4e3e70","line":509,"range":{"start_line":509,"start_character":37,"end_line":509,"end_character":54},"updated":"2016-05-09 18:24:17.000000000","message":"nit: .status","commit_id":"40175d8cdc33aac63d675b3de5ac357b5e8b35e9"},{"author":{"_account_id":9535,"name":"Gorka Eguileor","email":"geguileo@redhat.com","username":"Gorka"},"change_message_id":"6f500fc573e0524f54917c6d061e1316f4d5b1fc","unresolved":false,"context_lines":[{"line_number":529,"context_line":"        self.assertEqual(\u0027error\u0027, snapshot_obj.status)"},{"line_number":530,"context_line":""},{"line_number":531,"context_line":"        self.volume.delete_snapshot(self.context, snapshot_obj)"},{"line_number":532,"context_line":"        self.volume.delete_volume(self.context, volume[\u0027id\u0027], volume\u003dvolume)"},{"line_number":533,"context_line":""},{"line_number":534,"context_line":"    @mock.patch.object(QUOTAS, \u0027reserve\u0027)"},{"line_number":535,"context_line":"    @mock.patch.object(QUOTAS, \u0027commit\u0027)"}],"source_content_type":"text/x-python","patch_set":11,"id":"dab17558_dd3daabc","line":532,"range":{"start_line":532,"start_character":48,"end_line":532,"end_character":61},"updated":"2016-05-09 18:24:17.000000000","message":"nit: .id","commit_id":"40175d8cdc33aac63d675b3de5ac357b5e8b35e9"},{"author":{"_account_id":9535,"name":"Gorka Eguileor","email":"geguileo@redhat.com","username":"Gorka"},"change_message_id":"6f500fc573e0524f54917c6d061e1316f4d5b1fc","unresolved":false,"context_lines":[{"line_number":1185,"context_line":"        \"\"\"Test volume can be deleted in error_extending stats.\"\"\""},{"line_number":1186,"context_line":"        # create a volume"},{"line_number":1187,"context_line":"        volume \u003d tests_utils.create_volume(self.context, **self.volume_params)"},{"line_number":1188,"context_line":"        self.volume.create_volume(self.context, volume[\u0027id\u0027], volume\u003dvolume)"},{"line_number":1189,"context_line":""},{"line_number":1190,"context_line":"        # delete \u0027error_extending\u0027 volume"},{"line_number":1191,"context_line":"        db.volume_update(self.context, volume[\u0027id\u0027],"}],"source_content_type":"text/x-python","patch_set":11,"id":"dab17558_fd698ebf","line":1188,"range":{"start_line":1188,"start_character":54,"end_line":1188,"end_character":60},"updated":"2016-05-09 18:24:17.000000000","message":"nit: .id","commit_id":"40175d8cdc33aac63d675b3de5ac357b5e8b35e9"},{"author":{"_account_id":9535,"name":"Gorka Eguileor","email":"geguileo@redhat.com","username":"Gorka"},"change_message_id":"6f500fc573e0524f54917c6d061e1316f4d5b1fc","unresolved":false,"context_lines":[{"line_number":1190,"context_line":"        # delete \u0027error_extending\u0027 volume"},{"line_number":1191,"context_line":"        db.volume_update(self.context, volume[\u0027id\u0027],"},{"line_number":1192,"context_line":"                         {\u0027status\u0027: \u0027error_extending\u0027})"},{"line_number":1193,"context_line":"        self.volume.delete_volume(self.context, volume[\u0027id\u0027], volume\u003dvolume)"},{"line_number":1194,"context_line":"        self.assertRaises(exception.NotFound, db.volume_get,"},{"line_number":1195,"context_line":"                          self.context, volume[\u0027id\u0027])"},{"line_number":1196,"context_line":""}],"source_content_type":"text/x-python","patch_set":11,"id":"dab17558_3d64b6e2","line":1193,"range":{"start_line":1193,"start_character":54,"end_line":1193,"end_character":60},"updated":"2016-05-09 18:24:17.000000000","message":"ditto","commit_id":"40175d8cdc33aac63d675b3de5ac357b5e8b35e9"},{"author":{"_account_id":9535,"name":"Gorka Eguileor","email":"geguileo@redhat.com","username":"Gorka"},"change_message_id":"6f500fc573e0524f54917c6d061e1316f4d5b1fc","unresolved":false,"context_lines":[{"line_number":1210,"context_line":"        \"\"\"Test volume can be created from a snapshot.\"\"\""},{"line_number":1211,"context_line":"        volume_src \u003d tests_utils.create_volume(self.context,"},{"line_number":1212,"context_line":"                                               **self.volume_params)"},{"line_number":1213,"context_line":"        self.volume.create_volume(self.context, volume_src[\u0027id\u0027],"},{"line_number":1214,"context_line":"                                  volume\u003dvolume_src)"},{"line_number":1215,"context_line":"        snapshot_id \u003d create_snapshot(volume_src[\u0027id\u0027],"},{"line_number":1216,"context_line":"                                      size\u003dvolume_src[\u0027size\u0027])[\u0027id\u0027]"}],"source_content_type":"text/x-python","patch_set":11,"id":"dab17558_bda6e60d","line":1213,"range":{"start_line":1213,"start_character":58,"end_line":1213,"end_character":64},"updated":"2016-05-09 18:24:17.000000000","message":"ditto","commit_id":"40175d8cdc33aac63d675b3de5ac357b5e8b35e9"},{"author":{"_account_id":9535,"name":"Gorka Eguileor","email":"geguileo@redhat.com","username":"Gorka"},"change_message_id":"6f500fc573e0524f54917c6d061e1316f4d5b1fc","unresolved":false,"context_lines":[{"line_number":1220,"context_line":"        volume_dst \u003d tests_utils.create_volume(self.context,"},{"line_number":1221,"context_line":"                                               snapshot_id\u003dsnapshot_id,"},{"line_number":1222,"context_line":"                                               **self.volume_params)"},{"line_number":1223,"context_line":"        self.volume.create_volume(self.context, volume_dst[\u0027id\u0027],"},{"line_number":1224,"context_line":"                                  volume\u003dvolume_dst)"},{"line_number":1225,"context_line":"        self.assertEqual(volume_dst[\u0027id\u0027],"},{"line_number":1226,"context_line":"                         db.volume_get("}],"source_content_type":"text/x-python","patch_set":11,"id":"dab17558_ddabead4","line":1223,"range":{"start_line":1223,"start_character":58,"end_line":1223,"end_character":64},"updated":"2016-05-09 18:24:17.000000000","message":"ditto and also for the ones that follow  ;-)","commit_id":"40175d8cdc33aac63d675b3de5ac357b5e8b35e9"},{"author":{"_account_id":9535,"name":"Gorka Eguileor","email":"geguileo@redhat.com","username":"Gorka"},"change_message_id":"6f500fc573e0524f54917c6d061e1316f4d5b1fc","unresolved":false,"context_lines":[{"line_number":3860,"context_line":"        # works when new_size \u003e orig_size"},{"line_number":3861,"context_line":"        reserve.return_value \u003d [\"RESERVATION\"]"},{"line_number":3862,"context_line":"        volume_api.extend(self.context, volume, 3)"},{"line_number":3863,"context_line":"        volume.refresh()"},{"line_number":3864,"context_line":"        self.assertEqual(\u0027extending\u0027, volume[\u0027status\u0027])"},{"line_number":3865,"context_line":"        reserve.assert_called_once_with(self.context, gigabytes\u003d1,"},{"line_number":3866,"context_line":"                                        project_id\u003dvolume[\u0027project_id\u0027])"}],"source_content_type":"text/x-python","patch_set":11,"id":"dab17558_1d5292dd","line":3863,"updated":"2016-05-09 18:24:17.000000000","message":"nice!","commit_id":"40175d8cdc33aac63d675b3de5ac357b5e8b35e9"},{"author":{"_account_id":9535,"name":"Gorka Eguileor","email":"geguileo@redhat.com","username":"Gorka"},"change_message_id":"6f500fc573e0524f54917c6d061e1316f4d5b1fc","unresolved":false,"context_lines":[{"line_number":3901,"context_line":"                          self.context, volume[\u0027id\u0027], 3,"},{"line_number":3902,"context_line":"                          fake_reservations, volume\u003dvolume)"},{"line_number":3903,"context_line":""},{"line_number":3904,"context_line":"        vol \u003d db.volume_get(context.get_admin_context(), volume[\u0027id\u0027])"},{"line_number":3905,"context_line":"        self.assertEqual(\u0027error_extending\u0027, vol.status)"},{"line_number":3906,"context_line":""},{"line_number":3907,"context_line":"        # lets cleanup the mess."}],"source_content_type":"text/x-python","patch_set":11,"id":"dab17558_fdfa2ebc","line":3904,"updated":"2016-05-09 18:24:17.000000000","message":"nit: volume.refresh()","commit_id":"40175d8cdc33aac63d675b3de5ac357b5e8b35e9"},{"author":{"_account_id":9535,"name":"Gorka Eguileor","email":"geguileo@redhat.com","username":"Gorka"},"change_message_id":"6f500fc573e0524f54917c6d061e1316f4d5b1fc","unresolved":false,"context_lines":[{"line_number":3926,"context_line":"            volume[\u0027status\u0027] \u003d \u0027extending\u0027"},{"line_number":3927,"context_line":"            self.volume.extend_volume(self.context, volume[\u0027id\u0027], \u00274\u0027,"},{"line_number":3928,"context_line":"                                      fake_reservations, volume\u003dvolume)"},{"line_number":3929,"context_line":"            vol \u003d db.volume_get(context.get_admin_context(), volume[\u0027id\u0027])"},{"line_number":3930,"context_line":"            self.assertEqual(2, vol[\u0027size\u0027])"},{"line_number":3931,"context_line":"            self.assertEqual(\u0027error_extending\u0027, vol[\u0027status\u0027])"},{"line_number":3932,"context_line":""}],"source_content_type":"text/x-python","patch_set":11,"id":"dab17558_3df316d8","line":3929,"updated":"2016-05-09 18:24:17.000000000","message":"ditto","commit_id":"40175d8cdc33aac63d675b3de5ac357b5e8b35e9"}],"cinder/volume/manager.py":[{"author":{"_account_id":12825,"name":"Szymon Wróblewski","email":"szymon.wroblewski@ovhcloud.com","username":"bluex"},"change_message_id":"9162d5a9369fae6c03d10412950ac921f74e71fe","unresolved":false,"context_lines":[{"line_number":677,"context_line":"            if volume is None:"},{"line_number":678,"context_line":"                volume \u003d objects.Volume.get_by_id(context, volume_id)"},{"line_number":679,"context_line":"            else:"},{"line_number":680,"context_line":"                volume.refresh()"},{"line_number":681,"context_line":"        except exception.VolumeNotFound:"},{"line_number":682,"context_line":"            # NOTE(thingee): It could be possible for a volume to"},{"line_number":683,"context_line":"            # be deleted when resuming deletes from init_host()."},{"line_number":684,"context_line":"            LOG.debug(\"Attempted delete of non-existent volume: %s\","},{"line_number":685,"context_line":"                      volume_id)"},{"line_number":686,"context_line":"            return"},{"line_number":687,"context_line":""},{"line_number":688,"context_line":"        if context.project_id !\u003d volume.project_id:"},{"line_number":689,"context_line":"            project_id \u003d volume.project_id"}],"source_content_type":"text/x-python","patch_set":1,"id":"da0c15f0_238ded31","side":"PARENT","line":686,"range":{"start_line":680,"start_character":16,"end_line":686,"end_character":18},"updated":"2016-03-25 15:59:21.000000000","message":"You should keep refresh and try ... except.","commit_id":"b78b032654ab6598b2ae21bfac6407fe7542f2fe"},{"author":{"_account_id":11600,"name":"Michał Dulko","email":"michal.dulko@gmail.com","username":"dulek"},"change_message_id":"ff1195d54a2780e4fd595a7243ead94a6cea2954","unresolved":false,"context_lines":[{"line_number":677,"context_line":"            if volume is None:"},{"line_number":678,"context_line":"                volume \u003d objects.Volume.get_by_id(context, volume_id)"},{"line_number":679,"context_line":"            else:"},{"line_number":680,"context_line":"                volume.refresh()"},{"line_number":681,"context_line":"        except exception.VolumeNotFound:"},{"line_number":682,"context_line":"            # NOTE(thingee): It could be possible for a volume to"},{"line_number":683,"context_line":"            # be deleted when resuming deletes from init_host()."},{"line_number":684,"context_line":"            LOG.debug(\"Attempted delete of non-existent volume: %s\","},{"line_number":685,"context_line":"                      volume_id)"},{"line_number":686,"context_line":"            return"},{"line_number":687,"context_line":""},{"line_number":688,"context_line":"        if context.project_id !\u003d volume.project_id:"},{"line_number":689,"context_line":"            project_id \u003d volume.project_id"}],"source_content_type":"text/x-python","patch_set":1,"id":"ba0121b8_368b34c5","side":"PARENT","line":686,"range":{"start_line":680,"start_character":16,"end_line":686,"end_character":18},"in_reply_to":"da0c15f0_238ded31","updated":"2016-03-30 10:33:10.000000000","message":"Ah, good point!","commit_id":"b78b032654ab6598b2ae21bfac6407fe7542f2fe"},{"author":{"_account_id":12825,"name":"Szymon Wróblewski","email":"szymon.wroblewski@ovhcloud.com","username":"bluex"},"change_message_id":"9162d5a9369fae6c03d10412950ac921f74e71fe","unresolved":false,"context_lines":[{"line_number":552,"context_line":"        \"\"\""},{"line_number":553,"context_line":"        return self.driver.initialized"},{"line_number":554,"context_line":""},{"line_number":555,"context_line":"    def create_volume(self, context, volume_id, request_spec\u003dNone,"},{"line_number":556,"context_line":"                      filter_properties\u003dNone, allow_reschedule\u003dTrue,"},{"line_number":557,"context_line":"                      volume\u003dNone):"},{"line_number":558,"context_line":"        \"\"\"Creates the volume.\"\"\""}],"source_content_type":"text/x-python","patch_set":1,"id":"da0c15f0_83267966","line":555,"range":{"start_line":555,"start_character":37,"end_line":555,"end_character":46},"updated":"2016-03-25 15:59:21.000000000","message":"It\u0027s no longer used. Maybe replace it with volume param?","commit_id":"74eb8500810239da1703cf162d566bc51f2b17eb"},{"author":{"_account_id":11600,"name":"Michał Dulko","email":"michal.dulko@gmail.com","username":"dulek"},"change_message_id":"ff1195d54a2780e4fd595a7243ead94a6cea2954","unresolved":false,"context_lines":[{"line_number":552,"context_line":"        \"\"\""},{"line_number":553,"context_line":"        return self.driver.initialized"},{"line_number":554,"context_line":""},{"line_number":555,"context_line":"    def create_volume(self, context, volume_id, request_spec\u003dNone,"},{"line_number":556,"context_line":"                      filter_properties\u003dNone, allow_reschedule\u003dTrue,"},{"line_number":557,"context_line":"                      volume\u003dNone):"},{"line_number":558,"context_line":"        \"\"\"Creates the volume.\"\"\""}],"source_content_type":"text/x-python","patch_set":1,"id":"ba0121b8_166a701a","line":555,"range":{"start_line":555,"start_character":37,"end_line":555,"end_character":46},"in_reply_to":"da0c15f0_83267966","updated":"2016-03-30 10:33:10.000000000","message":"It\u0027s not possible to do while keeping compatibility with Mitaka. We could\u0027ve done that in RPC version bump patches in late Mitaka, but unfortunately I\u0027ve missed that opportunity.","commit_id":"74eb8500810239da1703cf162d566bc51f2b17eb"},{"author":{"_account_id":12825,"name":"Szymon Wróblewski","email":"szymon.wroblewski@ovhcloud.com","username":"bluex"},"change_message_id":"9162d5a9369fae6c03d10412950ac921f74e71fe","unresolved":false,"context_lines":[{"line_number":554,"context_line":""},{"line_number":555,"context_line":"    def create_volume(self, context, volume_id, request_spec\u003dNone,"},{"line_number":556,"context_line":"                      filter_properties\u003dNone, allow_reschedule\u003dTrue,"},{"line_number":557,"context_line":"                      volume\u003dNone):"},{"line_number":558,"context_line":"        \"\"\"Creates the volume.\"\"\""},{"line_number":559,"context_line":""},{"line_number":560,"context_line":"        context_elevated \u003d context.elevated()"}],"source_content_type":"text/x-python","patch_set":1,"id":"da0c15f0_439bc1c9","line":557,"range":{"start_line":557,"start_character":22,"end_line":557,"end_character":33},"updated":"2016-03-25 15:59:21.000000000","message":"Don\u0027t think volume should have default value now when it\u0027s required argument.","commit_id":"74eb8500810239da1703cf162d566bc51f2b17eb"},{"author":{"_account_id":11600,"name":"Michał Dulko","email":"michal.dulko@gmail.com","username":"dulek"},"change_message_id":"ff1195d54a2780e4fd595a7243ead94a6cea2954","unresolved":false,"context_lines":[{"line_number":554,"context_line":""},{"line_number":555,"context_line":"    def create_volume(self, context, volume_id, request_spec\u003dNone,"},{"line_number":556,"context_line":"                      filter_properties\u003dNone, allow_reschedule\u003dTrue,"},{"line_number":557,"context_line":"                      volume\u003dNone):"},{"line_number":558,"context_line":"        \"\"\"Creates the volume.\"\"\""},{"line_number":559,"context_line":""},{"line_number":560,"context_line":"        context_elevated \u003d context.elevated()"}],"source_content_type":"text/x-python","patch_set":1,"id":"ba0121b8_b661043c","line":557,"range":{"start_line":557,"start_character":22,"end_line":557,"end_character":33},"in_reply_to":"da0c15f0_439bc1c9","updated":"2016-03-30 10:33:10.000000000","message":"ditto","commit_id":"74eb8500810239da1703cf162d566bc51f2b17eb"},{"author":{"_account_id":12825,"name":"Szymon Wróblewski","email":"szymon.wroblewski@ovhcloud.com","username":"bluex"},"change_message_id":"9162d5a9369fae6c03d10412950ac921f74e71fe","unresolved":false,"context_lines":[{"line_number":1809,"context_line":"                                \"source volume may have been deleted.\"),"},{"line_number":1810,"context_line":"                            {\u0027vol\u0027: new_volume.id})"},{"line_number":1811,"context_line":""},{"line_number":1812,"context_line":"    def migrate_volume_completion(self, ctxt, volume_id, new_volume_id,"},{"line_number":1813,"context_line":"                                  error\u003dFalse, volume\u003dNone, new_volume\u003dNone):"},{"line_number":1814,"context_line":"        try:"},{"line_number":1815,"context_line":"            # NOTE(flaper87): Verify the driver is enabled"},{"line_number":1816,"context_line":"            # before going forward. The exception will be caught"}],"source_content_type":"text/x-python","patch_set":1,"id":"da0c15f0_63b525cc","line":1813,"range":{"start_line":1812,"start_character":46,"end_line":1813,"end_character":75},"updated":"2016-03-25 15:59:21.000000000","message":"ditto","commit_id":"74eb8500810239da1703cf162d566bc51f2b17eb"},{"author":{"_account_id":12825,"name":"Szymon Wróblewski","email":"szymon.wroblewski@ovhcloud.com","username":"bluex"},"change_message_id":"9162d5a9369fae6c03d10412950ac921f74e71fe","unresolved":false,"context_lines":[{"line_number":1892,"context_line":"                 resource\u003dvolume)"},{"line_number":1893,"context_line":"        return volume.id"},{"line_number":1894,"context_line":""},{"line_number":1895,"context_line":"    def migrate_volume(self, ctxt, volume_id, host, force_host_copy\u003dFalse,"},{"line_number":1896,"context_line":"                       new_type_id\u003dNone, volume\u003dNone):"},{"line_number":1897,"context_line":"        \"\"\"Migrate the volume to the specified host (called on source host).\"\"\""},{"line_number":1898,"context_line":"        try:"},{"line_number":1899,"context_line":"            # NOTE(flaper87): Verify the driver is enabled"}],"source_content_type":"text/x-python","patch_set":1,"id":"da0c15f0_43dd8113","line":1896,"range":{"start_line":1895,"start_character":35,"end_line":1896,"end_character":52},"updated":"2016-03-25 15:59:21.000000000","message":"ditto","commit_id":"74eb8500810239da1703cf162d566bc51f2b17eb"},{"author":{"_account_id":12825,"name":"Szymon Wróblewski","email":"szymon.wroblewski@ovhcloud.com","username":"bluex"},"change_message_id":"9162d5a9369fae6c03d10412950ac921f74e71fe","unresolved":false,"context_lines":[{"line_number":2068,"context_line":"                    context, snapshot, event_suffix,"},{"line_number":2069,"context_line":"                    extra_usage_info\u003dextra_usage_info, host\u003dself.host)"},{"line_number":2070,"context_line":""},{"line_number":2071,"context_line":"    def extend_volume(self, context, volume_id, new_size, reservations,"},{"line_number":2072,"context_line":"                      volume\u003dNone):"},{"line_number":2073,"context_line":"        try:"},{"line_number":2074,"context_line":"            # NOTE(flaper87): Verify the driver is enabled"},{"line_number":2075,"context_line":"            # before going forward. The exception will be caught"}],"source_content_type":"text/x-python","patch_set":1,"id":"da0c15f0_43ee218c","line":2072,"range":{"start_line":2071,"start_character":37,"end_line":2072,"end_character":33},"updated":"2016-03-25 15:59:21.000000000","message":"ditto","commit_id":"74eb8500810239da1703cf162d566bc51f2b17eb"},{"author":{"_account_id":9535,"name":"Gorka Eguileor","email":"geguileo@redhat.com","username":"Gorka"},"change_message_id":"6f500fc573e0524f54917c6d061e1316f4d5b1fc","unresolved":false,"context_lines":[{"line_number":3180,"context_line":"            volume \u003d objects.Volume.get_by_id(ctxt, volume[\u0027id\u0027])"},{"line_number":3181,"context_line":"            new_volume \u003d objects.Volume.get_by_id(ctxt, new_volume[\u0027id\u0027])"},{"line_number":3182,"context_line":""},{"line_number":3183,"context_line":"        model_update \u003d None"},{"line_number":3184,"context_line":"        model_update_default \u003d {\u0027_name_id\u0027: new_volume.name_id,"},{"line_number":3185,"context_line":"                                \u0027provider_location\u0027:"},{"line_number":3186,"context_line":"                                new_volume.provider_location}"}],"source_content_type":"text/x-python","patch_set":11,"id":"dab17558_02798fc8","side":"PARENT","line":3183,"updated":"2016-05-09 18:24:17.000000000","message":"-1: You cannot remove this, if driver.update_migrated_volume call fails with an unexpected exception you need model_update to have a default value.","commit_id":"23c64ee6fc0a8efd0eec7ce10723a2e7e85a0ae2"},{"author":{"_account_id":11600,"name":"Michał Dulko","email":"michal.dulko@gmail.com","username":"dulek"},"change_message_id":"c5a71525c42d23a58745cf966bb2914916c1ac3c","unresolved":false,"context_lines":[{"line_number":3180,"context_line":"            volume \u003d objects.Volume.get_by_id(ctxt, volume[\u0027id\u0027])"},{"line_number":3181,"context_line":"            new_volume \u003d objects.Volume.get_by_id(ctxt, new_volume[\u0027id\u0027])"},{"line_number":3182,"context_line":""},{"line_number":3183,"context_line":"        model_update \u003d None"},{"line_number":3184,"context_line":"        model_update_default \u003d {\u0027_name_id\u0027: new_volume.name_id,"},{"line_number":3185,"context_line":"                                \u0027provider_location\u0027:"},{"line_number":3186,"context_line":"                                new_volume.provider_location}"}],"source_content_type":"text/x-python","patch_set":11,"id":"dab17558_dd27e1b3","side":"PARENT","line":3183,"in_reply_to":"dab17558_02798fc8","updated":"2016-05-17 20:49:27.000000000","message":"Whoops, thank you!","commit_id":"23c64ee6fc0a8efd0eec7ce10723a2e7e85a0ae2"}],"cinder/volume/rpcapi.py":[{"author":{"_account_id":12825,"name":"Szymon Wróblewski","email":"szymon.wroblewski@ovhcloud.com","username":"bluex"},"change_message_id":"9162d5a9369fae6c03d10412950ac921f74e71fe","unresolved":false,"context_lines":[{"line_number":105,"context_line":"    TOPIC \u003d CONF.volume_topic"},{"line_number":106,"context_line":"    BINARY \u003d \u0027cinder-volume\u0027"},{"line_number":107,"context_line":""},{"line_number":108,"context_line":"    def _compat_ver(self, current, legacy):"},{"line_number":109,"context_line":"        if self.client.can_send_version(current):"},{"line_number":110,"context_line":"            return current"},{"line_number":111,"context_line":"        else:"},{"line_number":112,"context_line":"            return legacy"},{"line_number":113,"context_line":""},{"line_number":114,"context_line":"    def _get_cctxt(self, host, version):"},{"line_number":115,"context_line":"        new_host \u003d utils.get_volume_rpc_host(host)"}],"source_content_type":"text/x-python","patch_set":1,"id":"da0c15f0_4318e184","side":"PARENT","line":112,"range":{"start_line":108,"start_character":4,"end_line":112,"end_character":25},"updated":"2016-03-25 15:59:21.000000000","message":"You should keep that for new code requiring versions over 2.0","commit_id":"b78b032654ab6598b2ae21bfac6407fe7542f2fe"},{"author":{"_account_id":11600,"name":"Michał Dulko","email":"michal.dulko@gmail.com","username":"dulek"},"change_message_id":"ff1195d54a2780e4fd595a7243ead94a6cea2954","unresolved":false,"context_lines":[{"line_number":105,"context_line":"    TOPIC \u003d CONF.volume_topic"},{"line_number":106,"context_line":"    BINARY \u003d \u0027cinder-volume\u0027"},{"line_number":107,"context_line":""},{"line_number":108,"context_line":"    def _compat_ver(self, current, legacy):"},{"line_number":109,"context_line":"        if self.client.can_send_version(current):"},{"line_number":110,"context_line":"            return current"},{"line_number":111,"context_line":"        else:"},{"line_number":112,"context_line":"            return legacy"},{"line_number":113,"context_line":""},{"line_number":114,"context_line":"    def _get_cctxt(self, host, version):"},{"line_number":115,"context_line":"        new_host \u003d utils.get_volume_rpc_host(host)"}],"source_content_type":"text/x-python","patch_set":1,"id":"ba0121b8_167430cd","side":"PARENT","line":112,"range":{"start_line":108,"start_character":4,"end_line":112,"end_character":25},"in_reply_to":"da0c15f0_4318e184","updated":"2016-03-30 10:33:10.000000000","message":"I don\u0027t think so - new compatibility code will not use this method, as it will require to do some logic inside if and else clauses.","commit_id":"b78b032654ab6598b2ae21bfac6407fe7542f2fe"},{"author":{"_account_id":12825,"name":"Szymon Wróblewski","email":"szymon.wroblewski@ovhcloud.com","username":"bluex"},"change_message_id":"9162d5a9369fae6c03d10412950ac921f74e71fe","unresolved":false,"context_lines":[{"line_number":159,"context_line":"        cctxt.cast(ctxt, \u0027create_volume\u0027, **msg_args)"},{"line_number":160,"context_line":""},{"line_number":161,"context_line":"    def delete_volume(self, ctxt, volume, unmanage_only\u003dFalse, cascade\u003dFalse):"},{"line_number":162,"context_line":"        msg_args \u003d {\u0027volume_id\u0027: volume.id, \u0027unmanage_only\u0027: unmanage_only,"},{"line_number":163,"context_line":"                    \u0027volume\u0027: volume, \u0027cascade\u0027: cascade}"},{"line_number":164,"context_line":""},{"line_number":165,"context_line":"        version \u003d \u00272.0\u0027"},{"line_number":166,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"da0c15f0_03c8a854","line":163,"range":{"start_line":162,"start_character":8,"end_line":163,"end_character":57},"updated":"2016-03-25 15:59:21.000000000","message":"Keeping parameters as a dict is no longer required as none of them are added dynamically.","commit_id":"74eb8500810239da1703cf162d566bc51f2b17eb"},{"author":{"_account_id":11600,"name":"Michał Dulko","email":"michal.dulko@gmail.com","username":"dulek"},"change_message_id":"ff1195d54a2780e4fd595a7243ead94a6cea2954","unresolved":false,"context_lines":[{"line_number":159,"context_line":"        cctxt.cast(ctxt, \u0027create_volume\u0027, **msg_args)"},{"line_number":160,"context_line":""},{"line_number":161,"context_line":"    def delete_volume(self, ctxt, volume, unmanage_only\u003dFalse, cascade\u003dFalse):"},{"line_number":162,"context_line":"        msg_args \u003d {\u0027volume_id\u0027: volume.id, \u0027unmanage_only\u0027: unmanage_only,"},{"line_number":163,"context_line":"                    \u0027volume\u0027: volume, \u0027cascade\u0027: cascade}"},{"line_number":164,"context_line":""},{"line_number":165,"context_line":"        version \u003d \u00272.0\u0027"},{"line_number":166,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"ba0121b8_d648f889","line":163,"range":{"start_line":162,"start_character":8,"end_line":163,"end_character":57},"in_reply_to":"da0c15f0_03c8a854","updated":"2016-03-30 10:33:10.000000000","message":"Makes sense.","commit_id":"74eb8500810239da1703cf162d566bc51f2b17eb"},{"author":{"_account_id":12825,"name":"Szymon Wróblewski","email":"szymon.wroblewski@ovhcloud.com","username":"bluex"},"change_message_id":"9162d5a9369fae6c03d10412950ac921f74e71fe","unresolved":false,"context_lines":[{"line_number":232,"context_line":"                          new_user\u003dnew_user, new_project\u003dnew_project)"},{"line_number":233,"context_line":""},{"line_number":234,"context_line":"    def extend_volume(self, ctxt, volume, new_size, reservations):"},{"line_number":235,"context_line":"        msg_args \u003d {\u0027volume_id\u0027: volume.id, \u0027new_size\u0027: new_size,"},{"line_number":236,"context_line":"                    \u0027reservations\u0027: reservations, \u0027volume\u0027: volume}"},{"line_number":237,"context_line":"        version \u003d \u00272.0\u0027"},{"line_number":238,"context_line":""},{"line_number":239,"context_line":"        cctxt \u003d self._get_cctxt(volume.host, version)"}],"source_content_type":"text/x-python","patch_set":1,"id":"da0c15f0_23d20c01","line":236,"range":{"start_line":235,"start_character":8,"end_line":236,"end_character":67},"updated":"2016-03-25 15:59:21.000000000","message":"ditto","commit_id":"74eb8500810239da1703cf162d566bc51f2b17eb"},{"author":{"_account_id":20105,"name":"Cao ShuFeng","email":"caosf.fnst@cn.fujitsu.com","username":"caosf.fnst"},"change_message_id":"cc0e532bb143533912165e7ae54915f93f6e64ea","unresolved":false,"context_lines":[{"line_number":241,"context_line":""},{"line_number":242,"context_line":"    def migrate_volume(self, ctxt, volume, dest_host, force_host_copy):"},{"line_number":243,"context_line":"        host_p \u003d {\u0027host\u0027: dest_host.host,"},{"line_number":244,"context_line":"                  \u0027capabilities\u0027: dest_host.capabilities, \u0027volume\u0027: volume}"},{"line_number":245,"context_line":""},{"line_number":246,"context_line":"        msg_args \u003d {\u0027volume_id\u0027: volume.id, \u0027host\u0027: host_p,"},{"line_number":247,"context_line":"                    \u0027force_host_copy\u0027: force_host_copy}"}],"source_content_type":"text/x-python","patch_set":1,"id":"da0c15f0_553c04e2","line":244,"range":{"start_line":244,"start_character":59,"end_line":244,"end_character":65},"updated":"2016-03-26 07:31:45.000000000","message":"Is this placed in the wrong palce?\nIMO, volume should be an element of msg_args.","commit_id":"74eb8500810239da1703cf162d566bc51f2b17eb"},{"author":{"_account_id":11600,"name":"Michał Dulko","email":"michal.dulko@gmail.com","username":"dulek"},"change_message_id":"504cc90d78621d150321dd48b2aaa5bfa046f8a6","unresolved":false,"context_lines":[{"line_number":241,"context_line":""},{"line_number":242,"context_line":"    def migrate_volume(self, ctxt, volume, dest_host, force_host_copy):"},{"line_number":243,"context_line":"        host_p \u003d {\u0027host\u0027: dest_host.host,"},{"line_number":244,"context_line":"                  \u0027capabilities\u0027: dest_host.capabilities, \u0027volume\u0027: volume}"},{"line_number":245,"context_line":""},{"line_number":246,"context_line":"        msg_args \u003d {\u0027volume_id\u0027: volume.id, \u0027host\u0027: host_p,"},{"line_number":247,"context_line":"                    \u0027force_host_copy\u0027: force_host_copy}"}],"source_content_type":"text/x-python","patch_set":1,"id":"ba0121b8_d6163854","line":244,"range":{"start_line":244,"start_character":59,"end_line":244,"end_character":65},"in_reply_to":"da0c15f0_553c04e2","updated":"2016-03-30 10:33:58.000000000","message":"Oh, thanks!","commit_id":"74eb8500810239da1703cf162d566bc51f2b17eb"},{"author":{"_account_id":12825,"name":"Szymon Wróblewski","email":"szymon.wroblewski@ovhcloud.com","username":"bluex"},"change_message_id":"9162d5a9369fae6c03d10412950ac921f74e71fe","unresolved":false,"context_lines":[{"line_number":243,"context_line":"        host_p \u003d {\u0027host\u0027: dest_host.host,"},{"line_number":244,"context_line":"                  \u0027capabilities\u0027: dest_host.capabilities, \u0027volume\u0027: volume}"},{"line_number":245,"context_line":""},{"line_number":246,"context_line":"        msg_args \u003d {\u0027volume_id\u0027: volume.id, \u0027host\u0027: host_p,"},{"line_number":247,"context_line":"                    \u0027force_host_copy\u0027: force_host_copy}"},{"line_number":248,"context_line":"        version \u003d \u00272.0\u0027"},{"line_number":249,"context_line":""},{"line_number":250,"context_line":"        cctxt \u003d self._get_cctxt(volume.host, version)"}],"source_content_type":"text/x-python","patch_set":1,"id":"da0c15f0_03f6e88e","line":247,"range":{"start_line":246,"start_character":8,"end_line":247,"end_character":55},"updated":"2016-03-25 15:59:21.000000000","message":"ditto","commit_id":"74eb8500810239da1703cf162d566bc51f2b17eb"},{"author":{"_account_id":12825,"name":"Szymon Wróblewski","email":"szymon.wroblewski@ovhcloud.com","username":"bluex"},"change_message_id":"9162d5a9369fae6c03d10412950ac921f74e71fe","unresolved":false,"context_lines":[{"line_number":251,"context_line":"        cctxt.cast(ctxt, \u0027migrate_volume\u0027, **msg_args)"},{"line_number":252,"context_line":""},{"line_number":253,"context_line":"    def migrate_volume_completion(self, ctxt, volume, new_volume, error):"},{"line_number":254,"context_line":"        msg_args \u003d {\u0027volume_id\u0027: volume.id, \u0027new_volume_id\u0027: new_volume.id,"},{"line_number":255,"context_line":"                    \u0027error\u0027: error, \u0027volume\u0027: volume, \u0027new_volume\u0027: new_volume}"},{"line_number":256,"context_line":"        version \u003d \u00272.0\u0027"},{"line_number":257,"context_line":""},{"line_number":258,"context_line":"        cctxt \u003d self._get_cctxt(volume.host, version)"}],"source_content_type":"text/x-python","patch_set":1,"id":"da0c15f0_a32bbcea","line":255,"range":{"start_line":254,"start_character":8,"end_line":255,"end_character":79},"updated":"2016-03-25 15:59:21.000000000","message":"ditto","commit_id":"74eb8500810239da1703cf162d566bc51f2b17eb"},{"author":{"_account_id":12825,"name":"Szymon Wróblewski","email":"szymon.wroblewski@ovhcloud.com","username":"bluex"},"change_message_id":"9162d5a9369fae6c03d10412950ac921f74e71fe","unresolved":false,"context_lines":[{"line_number":263,"context_line":"               old_reservations\u003dNone):"},{"line_number":264,"context_line":"        host_p \u003d {\u0027host\u0027: dest_host.host,"},{"line_number":265,"context_line":"                  \u0027capabilities\u0027: dest_host.capabilities}"},{"line_number":266,"context_line":"        msg_args \u003d {\u0027volume_id\u0027: volume.id, \u0027new_type_id\u0027: new_type_id,"},{"line_number":267,"context_line":"                    \u0027host\u0027: host_p, \u0027migration_policy\u0027: migration_policy,"},{"line_number":268,"context_line":"                    \u0027reservations\u0027: reservations, \u0027volume\u0027: volume,"},{"line_number":269,"context_line":"                    \u0027old_reservations\u0027: old_reservations}"},{"line_number":270,"context_line":"        version \u003d \u00272.0\u0027"},{"line_number":271,"context_line":""},{"line_number":272,"context_line":"        cctxt \u003d self._get_cctxt(volume.host, version)"}],"source_content_type":"text/x-python","patch_set":1,"id":"da0c15f0_c33a3036","line":269,"range":{"start_line":266,"start_character":8,"end_line":269,"end_character":57},"updated":"2016-03-25 15:59:21.000000000","message":"ditto","commit_id":"74eb8500810239da1703cf162d566bc51f2b17eb"},{"author":{"_account_id":12825,"name":"Szymon Wróblewski","email":"szymon.wroblewski@ovhcloud.com","username":"bluex"},"change_message_id":"9162d5a9369fae6c03d10412950ac921f74e71fe","unresolved":false,"context_lines":[{"line_number":330,"context_line":"        return cctxt.call(ctxt, \u0027get_capabilities\u0027, discover\u003ddiscover)"},{"line_number":331,"context_line":""},{"line_number":332,"context_line":"    def get_backup_device(self, ctxt, backup, volume):"},{"line_number":333,"context_line":"        cctxt \u003d self._get_cctxt(volume.host, \u00272.0\u0027)"},{"line_number":334,"context_line":"        return cctxt.call(ctxt, \u0027get_backup_device\u0027, backup\u003dbackup)"},{"line_number":335,"context_line":""},{"line_number":336,"context_line":"    def secure_file_operations_enabled(self, ctxt, volume):"}],"source_content_type":"text/x-python","patch_set":1,"id":"da0c15f0_03f708d4","line":333,"range":{"start_line":333,"start_character":45,"end_line":333,"end_character":50},"updated":"2016-03-25 15:59:21.000000000","message":"Keep it consistent, either use variable as before or remove previous uses of variable.","commit_id":"74eb8500810239da1703cf162d566bc51f2b17eb"},{"author":{"_account_id":11600,"name":"Michał Dulko","email":"michal.dulko@gmail.com","username":"dulek"},"change_message_id":"ff1195d54a2780e4fd595a7243ead94a6cea2954","unresolved":false,"context_lines":[{"line_number":330,"context_line":"        return cctxt.call(ctxt, \u0027get_capabilities\u0027, discover\u003ddiscover)"},{"line_number":331,"context_line":""},{"line_number":332,"context_line":"    def get_backup_device(self, ctxt, backup, volume):"},{"line_number":333,"context_line":"        cctxt \u003d self._get_cctxt(volume.host, \u00272.0\u0027)"},{"line_number":334,"context_line":"        return cctxt.call(ctxt, \u0027get_backup_device\u0027, backup\u003dbackup)"},{"line_number":335,"context_line":""},{"line_number":336,"context_line":"    def secure_file_operations_enabled(self, ctxt, volume):"}],"source_content_type":"text/x-python","patch_set":1,"id":"ba0121b8_165b9055","line":333,"range":{"start_line":333,"start_character":45,"end_line":333,"end_character":50},"in_reply_to":"da0c15f0_03f708d4","updated":"2016-03-30 10:33:10.000000000","message":"And this makes sense too.","commit_id":"74eb8500810239da1703cf162d566bc51f2b17eb"},{"author":{"_account_id":12825,"name":"Szymon Wróblewski","email":"szymon.wroblewski@ovhcloud.com","username":"bluex"},"change_message_id":"9162d5a9369fae6c03d10412950ac921f74e71fe","unresolved":false,"context_lines":[{"line_number":334,"context_line":"        return cctxt.call(ctxt, \u0027get_backup_device\u0027, backup\u003dbackup)"},{"line_number":335,"context_line":""},{"line_number":336,"context_line":"    def secure_file_operations_enabled(self, ctxt, volume):"},{"line_number":337,"context_line":"        cctxt \u003d self._get_cctxt(volume.host, \u00272.0\u0027)"},{"line_number":338,"context_line":"        return cctxt.call(ctxt, \u0027secure_file_operations_enabled\u0027,"},{"line_number":339,"context_line":"                          volume\u003dvolume)"}],"source_content_type":"text/x-python","patch_set":1,"id":"da0c15f0_e3265467","line":337,"range":{"start_line":337,"start_character":45,"end_line":337,"end_character":50},"updated":"2016-03-25 15:59:21.000000000","message":"ditto","commit_id":"74eb8500810239da1703cf162d566bc51f2b17eb"},{"author":{"_account_id":12825,"name":"Szymon Wróblewski","email":"szymon.wroblewski@ovhcloud.com","username":"bluex"},"change_message_id":"9553073e68ca8e46e8d9ea37eaff4d4bd72ea426","unresolved":false,"context_lines":[{"line_number":105,"context_line":""},{"line_number":106,"context_line":"    def _get_cctxt(self, host, version):"},{"line_number":107,"context_line":"        new_host \u003d utils.get_volume_rpc_host(host)"},{"line_number":108,"context_line":"        return self.client.prepare(server\u003dnew_host, version\u003d\u00272.0\u0027)"},{"line_number":109,"context_line":""},{"line_number":110,"context_line":"    def create_consistencygroup(self, ctxt, group, host):"},{"line_number":111,"context_line":"        cctxt \u003d self._get_cctxt(host, \u00272.0\u0027)"}],"source_content_type":"text/x-python","patch_set":7,"id":"5a18252c_782466ae","line":108,"range":{"start_line":108,"start_character":52,"end_line":108,"end_character":65},"updated":"2016-04-13 20:22:18.000000000","message":"version parameter of _get_cctxt becomes useless with this change, it probably would be better as\n\n version\u003dversion or self.RPC_API_VERSION\n\nif you plan on making version optional","commit_id":"d6cdd526613d90c1122b419c9359e79abb94ac74"},{"author":{"_account_id":9535,"name":"Gorka Eguileor","email":"geguileo@redhat.com","username":"Gorka"},"change_message_id":"6f500fc573e0524f54917c6d061e1316f4d5b1fc","unresolved":false,"context_lines":[{"line_number":107,"context_line":"    TOPIC \u003d CONF.volume_topic"},{"line_number":108,"context_line":"    BINARY \u003d \u0027cinder-volume\u0027"},{"line_number":109,"context_line":""},{"line_number":110,"context_line":"    def _compat_ver(self, current, legacy):"},{"line_number":111,"context_line":"        if self.client.can_send_version(current):"},{"line_number":112,"context_line":"            return current"},{"line_number":113,"context_line":"        else:"}],"source_content_type":"text/x-python","patch_set":11,"id":"dab17558_c2e94782","side":"PARENT","line":110,"updated":"2016-05-09 18:24:17.000000000","message":"?: Why remove this? We\u0027ll need it again for v3.0, right?","commit_id":"23c64ee6fc0a8efd0eec7ce10723a2e7e85a0ae2"},{"author":{"_account_id":11600,"name":"Michał Dulko","email":"michal.dulko@gmail.com","username":"dulek"},"change_message_id":"c5a71525c42d23a58745cf966bb2914916c1ac3c","unresolved":false,"context_lines":[{"line_number":107,"context_line":"    TOPIC \u003d CONF.volume_topic"},{"line_number":108,"context_line":"    BINARY \u003d \u0027cinder-volume\u0027"},{"line_number":109,"context_line":""},{"line_number":110,"context_line":"    def _compat_ver(self, current, legacy):"},{"line_number":111,"context_line":"        if self.client.can_send_version(current):"},{"line_number":112,"context_line":"            return current"},{"line_number":113,"context_line":"        else:"}],"source_content_type":"text/x-python","patch_set":11,"id":"dab17558_fd41050b","side":"PARENT","line":110,"in_reply_to":"dab17558_c2e94782","updated":"2016-05-17 20:49:27.000000000","message":"No need to keep a confusing unused method through the release. It\u0027s simple enough to be readded. And nothing is preventing us from not doing major version bump in Newton if we\u0027ll decide that technical debt from compatibility code is negligible.\n\nAnd now when I think of it - this should probably live in base rpc.RPCAPI class when needed.","commit_id":"23c64ee6fc0a8efd0eec7ce10723a2e7e85a0ae2"}]}
