)]}'
{"cinder/tests/unit/api/contrib/test_volume_actions.py":[{"author":{"_account_id":11600,"name":"Michał Dulko","email":"michal.dulko@gmail.com","username":"dulek"},"change_message_id":"8db7f1ec0669df9f0aa08049fec0570ed705fcca","unresolved":false,"context_lines":[{"line_number":39,"context_line":"CONF \u003d cfg.CONF"},{"line_number":40,"context_line":""},{"line_number":41,"context_line":""},{"line_number":42,"context_line":"def custom_volume_object(id, context, db_volume_type):"},{"line_number":43,"context_line":"    db_volume \u003d fake_volume.fake_db_volume(id\u003did, volume_type\u003ddb_volume_type,"},{"line_number":44,"context_line":"                                           volume_type_id\u003ddb_volume_type[\u0027id\u0027],"},{"line_number":45,"context_line":"                                           updated_at\u003ddatetime.datetime("},{"line_number":46,"context_line":"                                               1900, 1, 1, 1, 1, 1,"},{"line_number":47,"context_line":"                                               tzinfo\u003diso8601.iso8601.Utc()),"},{"line_number":48,"context_line":"                                           display_description\u003d\u0027displaydesc\u0027)"},{"line_number":49,"context_line":"    volume_obj \u003d objects.Volume._from_db_object(context, objects.Volume(),"},{"line_number":50,"context_line":"                                                db_volume,"},{"line_number":51,"context_line":"                                                expected_attrs\u003d[\u0027volume_type\u0027])"},{"line_number":52,"context_line":"    return volume_obj"},{"line_number":53,"context_line":""},{"line_number":54,"context_line":""},{"line_number":55,"context_line":"class VolumeActionsTest(test.TestCase):"}],"source_content_type":"text/x-python","patch_set":1,"id":"fa69d971_22afed95","line":52,"range":{"start_line":42,"start_character":0,"end_line":52,"end_character":21},"updated":"2016-01-07 19:30:20.000000000","message":"Why not just use fake_volume.fake_volume_obj? I haven\u0027t looked carefully into that, is it hard or impossible?","commit_id":"abf229c5d97c851b7e054715dda369158a8773b8"},{"author":{"_account_id":8247,"name":"Thang Pham","email":"thang.g.pham@gmail.com","username":"thang.pham"},"change_message_id":"2dd4e6f8dcae4ea0e77436f69b01ab0f832327c6","unresolved":false,"context_lines":[{"line_number":802,"context_line":"                            as mock_copy_volume_to_image:"},{"line_number":803,"context_line":"                        db_volume_type \u003d fake_volume.fake_db_volume_type("},{"line_number":804,"context_line":"                            name\u003d\u0027vol_type_name\u0027)"},{"line_number":805,"context_line":"                        mock_get.return_value \u003d fake_volume.fake_volume_obj("},{"line_number":806,"context_line":"                            self.context, **(volume_with_volume_type_dict("},{"line_number":807,"context_line":"                                id, self.context, db_volume_type)))"},{"line_number":808,"context_line":"                        mock_copy_volume_to_image.side_effect \u003d \\"}],"source_content_type":"text/x-python","patch_set":3,"id":"ba63e191_7fe1d399","line":805,"updated":"2016-01-19 17:42:07.000000000","message":"It looks like these two lines (L803 and L805) are use often enough below that it maybe good to create an object in setUp for it, e.g. vol_with_volume_type or replace volume_with_volume_type_dict() to  return the volume object.","commit_id":"975948d31167bff31f230255d6bbac15b5402c94"}],"cinder/tests/unit/test_volume_rpcapi.py":[{"author":{"_account_id":11600,"name":"Michał Dulko","email":"michal.dulko@gmail.com","username":"dulek"},"change_message_id":"8db7f1ec0669df9f0aa08049fec0570ed705fcca","unresolved":false,"context_lines":[{"line_number":107,"context_line":"        else:"},{"line_number":108,"context_line":"            rpcapi_class \u003d volume_rpcapi.VolumeAPI"},{"line_number":109,"context_line":"        rpcapi \u003d rpcapi_class()"},{"line_number":110,"context_line":"        expected_retval \u003d \u0027foo\u0027 if rpc_method \u003d\u003d \u0027call\u0027 else None"},{"line_number":111,"context_line":""},{"line_number":112,"context_line":"        target \u003d {"},{"line_number":113,"context_line":"            \"version\": kwargs.pop(\u0027version\u0027, rpcapi.BASE_RPC_API_VERSION)"}],"source_content_type":"text/x-python","patch_set":1,"id":"fa69d971_229dad59","line":110,"range":{"start_line":110,"start_character":35,"end_line":110,"end_character":45},"updated":"2016-01-07 19:30:20.000000000","message":"Personally I don\u0027t see a problem in smuggling a minor unit test fix into this patch, but marking it for other reviewers. :)\n\nBTW these tests could use some refactoring. Quick look at how Nova is doing the same tells me that we could do a little better (but not a great deal :().","commit_id":"abf229c5d97c851b7e054715dda369158a8773b8"}],"cinder/volume/api.py":[{"author":{"_account_id":11600,"name":"Michał Dulko","email":"michal.dulko@gmail.com","username":"dulek"},"change_message_id":"8db7f1ec0669df9f0aa08049fec0570ed705fcca","unresolved":false,"context_lines":[{"line_number":1198,"context_line":"                                                volume,"},{"line_number":1199,"context_line":"                                                recv_metadata)"},{"line_number":1200,"context_line":""},{"line_number":1201,"context_line":"        # TODO(sborkows) Co z updated_at? nie ma tego w polach obiektu"},{"line_number":1202,"context_line":"        response \u003d {\"id\": volume.id,"},{"line_number":1203,"context_line":"                    \"updated_at\": volume.updated_at,"},{"line_number":1204,"context_line":"                    \"status\": \u0027uploading\u0027,"}],"source_content_type":"text/x-python","patch_set":1,"id":"fa69d971_82da5916","line":1201,"range":{"start_line":1201,"start_character":8,"end_line":1201,"end_character":70},"updated":"2016-01-07 19:30:20.000000000","message":"I happen to understand this comment, but I don\u0027t think everyone does. ;)","commit_id":"abf229c5d97c851b7e054715dda369158a8773b8"}],"cinder/volume/manager.py":[{"author":{"_account_id":11600,"name":"Michał Dulko","email":"michal.dulko@gmail.com","username":"dulek"},"change_message_id":"8db7f1ec0669df9f0aa08049fec0570ed705fcca","unresolved":false,"context_lines":[{"line_number":1081,"context_line":"        reservations \u003d QUOTAS.reserve(ctx, **reserve_opts)"},{"line_number":1082,"context_line":""},{"line_number":1083,"context_line":"        try:"},{"line_number":1084,"context_line":"            new_vol_values \u003d dict(volume.items())"},{"line_number":1085,"context_line":"            new_vol_values.pop(\u0027id\u0027, None)"},{"line_number":1086,"context_line":"            new_vol_values.pop(\u0027_name_id\u0027, None)"},{"line_number":1087,"context_line":"            new_vol_values.pop(\u0027volume_type\u0027, None)"},{"line_number":1088,"context_line":"            new_vol_values.pop(\u0027name\u0027, None)"},{"line_number":1089,"context_line":""},{"line_number":1090,"context_line":"            new_vol_values[\u0027volume_type_id\u0027] \u003d volume_type_id"},{"line_number":1091,"context_line":"            new_vol_values[\u0027attach_status\u0027] \u003d \u0027detached\u0027"},{"line_number":1092,"context_line":"            new_vol_values[\u0027status\u0027] \u003d \u0027creating\u0027"},{"line_number":1093,"context_line":"            new_vol_values[\u0027project_id\u0027] \u003d ctx.project_id"},{"line_number":1094,"context_line":"            new_vol_values[\u0027display_name\u0027] \u003d \u0027image-%s\u0027 % image_meta[\u0027id\u0027]"},{"line_number":1095,"context_line":"            new_vol_values[\u0027source_volid\u0027] \u003d volume.id"},{"line_number":1096,"context_line":""},{"line_number":1097,"context_line":"            LOG.debug(\u0027Creating image volume entry: %s.\u0027, new_vol_values)"},{"line_number":1098,"context_line":"            image_volume \u003d objects.Volume(context\u003dctx, **new_vol_values)"},{"line_number":1099,"context_line":"            image_volume.create()"},{"line_number":1100,"context_line":"        except Exception as ex:"},{"line_number":1101,"context_line":"            LOG.exception(_LE(\u0027Create clone_image_volume: %(volume_id)s\u0027"}],"source_content_type":"text/x-python","patch_set":1,"id":"fa69d971_75e60146","line":1098,"range":{"start_line":1084,"start_character":0,"end_line":1098,"end_character":72},"updated":"2016-01-07 19:30:20.000000000","message":"Isn\u0027t this ugly? Can\u0027t we just do it in o.vo way? Maybe volume.copy() will work?","commit_id":"abf229c5d97c851b7e054715dda369158a8773b8"},{"author":{"_account_id":11600,"name":"Michał Dulko","email":"michal.dulko@gmail.com","username":"dulek"},"change_message_id":"8db7f1ec0669df9f0aa08049fec0570ed705fcca","unresolved":false,"context_lines":[{"line_number":1113,"context_line":"        try:"},{"line_number":1114,"context_line":"            self.create_volume(ctx, image_volume.id,"},{"line_number":1115,"context_line":"                               allow_reschedule\u003dFalse)"},{"line_number":1116,"context_line":"            image_volume \u003d self.db.volume_get(ctx, image_volume.id)"},{"line_number":1117,"context_line":"            if image_volume.status !\u003d \u0027available\u0027:"},{"line_number":1118,"context_line":"                raise exception.InvalidVolume(_(\u0027Volume is not available.\u0027))"},{"line_number":1119,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"fa69d971_d5f56dcb","line":1116,"range":{"start_line":1116,"start_character":12,"end_line":1116,"end_character":67},"updated":"2016-01-07 19:30:20.000000000","message":"Please convert to objects. Or isn\u0027t self.create_volume() above returning a volume object?","commit_id":"abf229c5d97c851b7e054715dda369158a8773b8"},{"author":{"_account_id":11600,"name":"Michał Dulko","email":"michal.dulko@gmail.com","username":"dulek"},"change_message_id":"8db7f1ec0669df9f0aa08049fec0570ed705fcca","unresolved":false,"context_lines":[{"line_number":1117,"context_line":"            if image_volume.status !\u003d \u0027available\u0027:"},{"line_number":1118,"context_line":"                raise exception.InvalidVolume(_(\u0027Volume is not available.\u0027))"},{"line_number":1119,"context_line":""},{"line_number":1120,"context_line":"            self.db.volume_admin_metadata_update(ctx.elevated(),"},{"line_number":1121,"context_line":"                                                 image_volume.id,"},{"line_number":1122,"context_line":"                                                 {\u0027readonly\u0027: \u0027True\u0027},"},{"line_number":1123,"context_line":"                                                 False)"},{"line_number":1124,"context_line":"            return image_volume"},{"line_number":1125,"context_line":"        except exception.CinderException:"},{"line_number":1126,"context_line":"            LOG.exception(_LE(\u0027Failed to clone volume %(volume_id)s for \u0027"}],"source_content_type":"text/x-python","patch_set":1,"id":"fa69d971_b51f9908","line":1123,"range":{"start_line":1120,"start_character":0,"end_line":1123,"end_character":55},"updated":"2016-01-07 19:30:20.000000000","message":"Please convert to objects:\n\n image_volume.admin_metadata[\u0027readonly\u0027] \u003d True","commit_id":"abf229c5d97c851b7e054715dda369158a8773b8"},{"author":{"_account_id":11600,"name":"Michał Dulko","email":"michal.dulko@gmail.com","username":"dulek"},"change_message_id":"8db7f1ec0669df9f0aa08049fec0570ed705fcca","unresolved":false,"context_lines":[{"line_number":1176,"context_line":""},{"line_number":1177,"context_line":"        image_volume_meta \u003d {\u0027glance_image_id\u0027: image_meta[\u0027id\u0027],"},{"line_number":1178,"context_line":"                             \u0027image_owner\u0027: ctx.project_id}"},{"line_number":1179,"context_line":"        self.db.volume_metadata_update(image_volume_context,"},{"line_number":1180,"context_line":"                                       image_volume.id,"},{"line_number":1181,"context_line":"                                       image_volume_meta,"},{"line_number":1182,"context_line":"                                       False)"},{"line_number":1183,"context_line":"        return True"},{"line_number":1184,"context_line":""},{"line_number":1185,"context_line":"    def copy_volume_to_image(self, context, volume_id, image_meta,"}],"source_content_type":"text/x-python","patch_set":1,"id":"fa69d971_f580b1f9","line":1182,"range":{"start_line":1179,"start_character":0,"end_line":1182,"end_character":45},"updated":"2016-01-07 19:30:20.000000000","message":"I think this should be converted to use objects. You\u0027re just adding two new metadata items so I think something like this should be fine:\n\n image_volume.metadata[\u0027glance_image_id\u0027] \u003d image_meta[\u0027id\u0027]\n image_volume.metadata[\u0027image_owner\u0027] \u003d ctx.project_id\n image_volume.save()","commit_id":"abf229c5d97c851b7e054715dda369158a8773b8"},{"author":{"_account_id":11600,"name":"Michał Dulko","email":"michal.dulko@gmail.com","username":"dulek"},"change_message_id":"8db7f1ec0669df9f0aa08049fec0570ed705fcca","unresolved":false,"context_lines":[{"line_number":1195,"context_line":"        try:"},{"line_number":1196,"context_line":"            # FIXME(sborkows): Remove this in v2.0 of RPC API"},{"line_number":1197,"context_line":"            if volume is None:"},{"line_number":1198,"context_line":"                volume \u003d objects.Volume.get_by_id(context, volume_id)"},{"line_number":1199,"context_line":""},{"line_number":1200,"context_line":"            # NOTE(flaper87): Verify the driver is enabled"},{"line_number":1201,"context_line":"            # before going forward. The exception will be caught"}],"source_content_type":"text/x-python","patch_set":1,"id":"fa69d971_c201313b","line":1198,"range":{"start_line":1198,"start_character":0,"end_line":1198,"end_character":69},"updated":"2016-01-07 19:30:20.000000000","message":"A comment that this is a backward compatibility stuff could be helpful.","commit_id":"abf229c5d97c851b7e054715dda369158a8773b8"}]}
