)]}'
{"cinder/api/v2/views/types.py":[{"author":{"_account_id":11600,"name":"Michał Dulko","email":"michal.dulko@gmail.com","username":"dulek"},"change_message_id":"0c685bf349ddff2158ff7498822c7b1da12b7af6","unresolved":false,"context_lines":[{"line_number":37,"context_line":"                             for volume_type in volume_types]"},{"line_number":38,"context_line":"        volume_type_links \u003d self._get_collection_links(request, volume_types,"},{"line_number":39,"context_line":"                                                       \u0027types\u0027)"},{"line_number":40,"context_line":"        voluem_types_dict \u003d dict(volume_types\u003dvolume_types_list)"},{"line_number":41,"context_line":"        if volume_type_links:"},{"line_number":42,"context_line":"            voluem_types_dict[\u0027volume_type_links\u0027] \u003d volume_type_links"},{"line_number":43,"context_line":"        return voluem_types_dict"}],"source_content_type":"text/x-python","patch_set":12,"id":"fa69d971_d1f1e1ce","line":40,"range":{"start_line":40,"start_character":8,"end_line":40,"end_character":14},"updated":"2015-12-31 12:31:38.000000000","message":"s/voluem/volume","commit_id":"9b9fce6958647f01b5a7d074e73369dc85014325"},{"author":{"_account_id":8846,"name":"Hao Wang","display_name":"Hao Wang","email":"sxmatch1986@gmail.com","username":"sxmatch"},"change_message_id":"5e6eec40b84f248c9368017207b0b0f2c5dbd45e","unresolved":false,"context_lines":[{"line_number":37,"context_line":"                             for volume_type in volume_types]"},{"line_number":38,"context_line":"        volume_type_links \u003d self._get_collection_links(request, volume_types,"},{"line_number":39,"context_line":"                                                       \u0027types\u0027)"},{"line_number":40,"context_line":"        voluem_types_dict \u003d dict(volume_types\u003dvolume_types_list)"},{"line_number":41,"context_line":"        if volume_type_links:"},{"line_number":42,"context_line":"            voluem_types_dict[\u0027volume_type_links\u0027] \u003d volume_type_links"},{"line_number":43,"context_line":"        return voluem_types_dict"}],"source_content_type":"text/x-python","patch_set":12,"id":"fa69d971_da88ff24","line":40,"range":{"start_line":40,"start_character":8,"end_line":40,"end_character":14},"in_reply_to":"fa69d971_d1f1e1ce","updated":"2016-01-04 02:06:22.000000000","message":"Done","commit_id":"9b9fce6958647f01b5a7d074e73369dc85014325"}],"cinder/db/sqlalchemy/api.py":[{"author":{"_account_id":11600,"name":"Michał Dulko","email":"michal.dulko@gmail.com","username":"dulek"},"change_message_id":"0c685bf349ddff2158ff7498822c7b1da12b7af6","unresolved":false,"context_lines":[{"line_number":2464,"context_line":""},{"line_number":2465,"context_line":""},{"line_number":2466,"context_line":"def _process_volume_types_filters(query, filters):"},{"line_number":2467,"context_line":"    context \u003d filters[\u0027context\u0027]"},{"line_number":2468,"context_line":"    if \u0027is_public\u0027 in filters and filters[\u0027is_public\u0027] is not None:"},{"line_number":2469,"context_line":"        the_filter \u003d [models.VolumeTypes.is_public \u003d\u003d filters[\u0027is_public\u0027]]"},{"line_number":2470,"context_line":"        if filters[\u0027is_public\u0027] and context.project_id is not None:"}],"source_content_type":"text/x-python","patch_set":12,"id":"fa69d971_1178d9c3","line":2467,"updated":"2015-12-31 12:31:38.000000000","message":"Can\u0027t we pass context directly? If not - why not simply pop it here?","commit_id":"9b9fce6958647f01b5a7d074e73369dc85014325"},{"author":{"_account_id":8846,"name":"Hao Wang","display_name":"Hao Wang","email":"sxmatch1986@gmail.com","username":"sxmatch"},"change_message_id":"5e6eec40b84f248c9368017207b0b0f2c5dbd45e","unresolved":false,"context_lines":[{"line_number":2464,"context_line":""},{"line_number":2465,"context_line":""},{"line_number":2466,"context_line":"def _process_volume_types_filters(query, filters):"},{"line_number":2467,"context_line":"    context \u003d filters[\u0027context\u0027]"},{"line_number":2468,"context_line":"    if \u0027is_public\u0027 in filters and filters[\u0027is_public\u0027] is not None:"},{"line_number":2469,"context_line":"        the_filter \u003d [models.VolumeTypes.is_public \u003d\u003d filters[\u0027is_public\u0027]]"},{"line_number":2470,"context_line":"        if filters[\u0027is_public\u0027] and context.project_id is not None:"}],"source_content_type":"text/x-python","patch_set":12,"id":"fa69d971_3ad7dbee","line":2467,"in_reply_to":"fa69d971_1178d9c3","updated":"2016-01-04 02:06:22.000000000","message":"This\u0027s because process_filters is designed with only two args, query and filters. Volume type is special one that it also needs the context, So I put the context in filters.\n\nSure, popping it here sounds great.","commit_id":"9b9fce6958647f01b5a7d074e73369dc85014325"},{"author":{"_account_id":11600,"name":"Michał Dulko","email":"michal.dulko@gmail.com","username":"dulek"},"change_message_id":"0c685bf349ddff2158ff7498822c7b1da12b7af6","unresolved":false,"context_lines":[{"line_number":2470,"context_line":"        if filters[\u0027is_public\u0027] and context.project_id is not None:"},{"line_number":2471,"context_line":"            projects_attr \u003d getattr(models.VolumeTypes, \u0027projects\u0027)"},{"line_number":2472,"context_line":"            the_filter.extend(["},{"line_number":2473,"context_line":"                projects_attr.any(project_id\u003dcontext.project_id, deleted\u003dFalse)"},{"line_number":2474,"context_line":"            ])"},{"line_number":2475,"context_line":"        if len(the_filter) \u003e 1:"},{"line_number":2476,"context_line":"            query \u003d query.filter(or_(*the_filter))"}],"source_content_type":"text/x-python","patch_set":12,"id":"fa69d971_11b1b98f","line":2473,"range":{"start_line":2473,"start_character":16,"end_line":2473,"end_character":79},"updated":"2015-12-31 12:31:38.000000000","message":"That\u0027s tricky, but I understand you copied it from the other place…","commit_id":"9b9fce6958647f01b5a7d074e73369dc85014325"},{"author":{"_account_id":8846,"name":"Hao Wang","display_name":"Hao Wang","email":"sxmatch1986@gmail.com","username":"sxmatch"},"change_message_id":"5e6eec40b84f248c9368017207b0b0f2c5dbd45e","unresolved":false,"context_lines":[{"line_number":2470,"context_line":"        if filters[\u0027is_public\u0027] and context.project_id is not None:"},{"line_number":2471,"context_line":"            projects_attr \u003d getattr(models.VolumeTypes, \u0027projects\u0027)"},{"line_number":2472,"context_line":"            the_filter.extend(["},{"line_number":2473,"context_line":"                projects_attr.any(project_id\u003dcontext.project_id, deleted\u003dFalse)"},{"line_number":2474,"context_line":"            ])"},{"line_number":2475,"context_line":"        if len(the_filter) \u003e 1:"},{"line_number":2476,"context_line":"            query \u003d query.filter(or_(*the_filter))"}],"source_content_type":"text/x-python","patch_set":12,"id":"fa69d971_7a3b1339","line":2473,"range":{"start_line":2473,"start_character":16,"end_line":2473,"end_character":79},"in_reply_to":"fa69d971_11b1b98f","updated":"2016-01-04 02:06:22.000000000","message":"Yes, this block of codes came from volume_type_get_all, I didn\u0027t change the logic. Just move them to here.","commit_id":"9b9fce6958647f01b5a7d074e73369dc85014325"},{"author":{"_account_id":11600,"name":"Michał Dulko","email":"michal.dulko@gmail.com","username":"dulek"},"change_message_id":"0c685bf349ddff2158ff7498822c7b1da12b7af6","unresolved":false,"context_lines":[{"line_number":2480,"context_line":"        del filters[\u0027is_public\u0027]"},{"line_number":2481,"context_line":"    del filters[\u0027context\u0027]"},{"line_number":2482,"context_line":"    if filters:"},{"line_number":2483,"context_line":"        # Ensure that filters\u0027 keys exist on the model"},{"line_number":2484,"context_line":"        if not is_valid_model_filters(models.VolumeTypes, filters):"},{"line_number":2485,"context_line":"            return"},{"line_number":2486,"context_line":"        if filters.get(\u0027extra_specs\u0027) is not None:"},{"line_number":2487,"context_line":"            the_filter \u003d []"},{"line_number":2488,"context_line":"            searchdict \u003d filters.get(\u0027extra_specs\u0027)"},{"line_number":2489,"context_line":"            extra_specs \u003d getattr(models.VolumeTypes, \u0027extra_specs\u0027)"},{"line_number":2490,"context_line":"            for k, v in searchdict.items():"},{"line_number":2491,"context_line":"                the_filter.extend([extra_specs.any(key\u003dk, value\u003dv,"},{"line_number":2492,"context_line":"                                                   deleted\u003dFalse)])"},{"line_number":2493,"context_line":"            if len(the_filter) \u003e 1:"},{"line_number":2494,"context_line":"                query \u003d query.filter(and_(*the_filter))"},{"line_number":2495,"context_line":"            else:"},{"line_number":2496,"context_line":"                query \u003d query.filter(the_filter[0])"},{"line_number":2497,"context_line":"            del filters[\u0027extra_specs\u0027]"},{"line_number":2498,"context_line":"        query \u003d query.filter_by(**filters)"},{"line_number":2499,"context_line":"    return query"},{"line_number":2500,"context_line":""}],"source_content_type":"text/x-python","patch_set":12,"id":"fa69d971_71403557","line":2497,"range":{"start_line":2483,"start_character":0,"end_line":2497,"end_character":38},"updated":"2015-12-31 12:31:38.000000000","message":"So we\u0027re supporting filtering by extra_specs? This isn\u0027t supported by API, because the only key we\u0027re allowing is \u0027is_public\u0027.","commit_id":"9b9fce6958647f01b5a7d074e73369dc85014325"},{"author":{"_account_id":8846,"name":"Hao Wang","display_name":"Hao Wang","email":"sxmatch1986@gmail.com","username":"sxmatch"},"change_message_id":"5e6eec40b84f248c9368017207b0b0f2c5dbd45e","unresolved":false,"context_lines":[{"line_number":2480,"context_line":"        del filters[\u0027is_public\u0027]"},{"line_number":2481,"context_line":"    del filters[\u0027context\u0027]"},{"line_number":2482,"context_line":"    if filters:"},{"line_number":2483,"context_line":"        # Ensure that filters\u0027 keys exist on the model"},{"line_number":2484,"context_line":"        if not is_valid_model_filters(models.VolumeTypes, filters):"},{"line_number":2485,"context_line":"            return"},{"line_number":2486,"context_line":"        if filters.get(\u0027extra_specs\u0027) is not None:"},{"line_number":2487,"context_line":"            the_filter \u003d []"},{"line_number":2488,"context_line":"            searchdict \u003d filters.get(\u0027extra_specs\u0027)"},{"line_number":2489,"context_line":"            extra_specs \u003d getattr(models.VolumeTypes, \u0027extra_specs\u0027)"},{"line_number":2490,"context_line":"            for k, v in searchdict.items():"},{"line_number":2491,"context_line":"                the_filter.extend([extra_specs.any(key\u003dk, value\u003dv,"},{"line_number":2492,"context_line":"                                                   deleted\u003dFalse)])"},{"line_number":2493,"context_line":"            if len(the_filter) \u003e 1:"},{"line_number":2494,"context_line":"                query \u003d query.filter(and_(*the_filter))"},{"line_number":2495,"context_line":"            else:"},{"line_number":2496,"context_line":"                query \u003d query.filter(the_filter[0])"},{"line_number":2497,"context_line":"            del filters[\u0027extra_specs\u0027]"},{"line_number":2498,"context_line":"        query \u003d query.filter_by(**filters)"},{"line_number":2499,"context_line":"    return query"},{"line_number":2500,"context_line":""}],"source_content_type":"text/x-python","patch_set":12,"id":"fa69d971_facaa319","line":2497,"range":{"start_line":2483,"start_character":0,"end_line":2497,"end_character":38},"in_reply_to":"fa69d971_71403557","updated":"2016-01-04 02:06:22.000000000","message":"I thought about this question, yes, we still only support to filter by is_public, and I didn\u0027t want to break this, but if we want to filter types by more args in further, it will be easy to get it, only need to put the params in filters in API, since we have supported it in db layer.","commit_id":"9b9fce6958647f01b5a7d074e73369dc85014325"},{"author":{"_account_id":11600,"name":"Michał Dulko","email":"michal.dulko@gmail.com","username":"dulek"},"change_message_id":"0c685bf349ddff2158ff7498822c7b1da12b7af6","unresolved":false,"context_lines":[{"line_number":2573,"context_line":"    with session.begin():"},{"line_number":2574,"context_line":"        # Add context for _process_volume_types_filters"},{"line_number":2575,"context_line":"        filters \u003d filters or {}"},{"line_number":2576,"context_line":"        filters[\u0027context\u0027] \u003d context"},{"line_number":2577,"context_line":"        # Generate the query"},{"line_number":2578,"context_line":"        query \u003d _generate_paginate_query(context, session, marker, limit,"},{"line_number":2579,"context_line":"                                         sort_keys, sort_dirs, filters, offset,"}],"source_content_type":"text/x-python","patch_set":12,"id":"fa69d971_f12c25ad","line":2576,"range":{"start_line":2576,"start_character":8,"end_line":2576,"end_character":36},"updated":"2015-12-31 12:31:38.000000000","message":"I really dislike passing context inside filters parameter. I understand this is because of how _generate_paginate_query was designed?","commit_id":"9b9fce6958647f01b5a7d074e73369dc85014325"},{"author":{"_account_id":8846,"name":"Hao Wang","display_name":"Hao Wang","email":"sxmatch1986@gmail.com","username":"sxmatch"},"change_message_id":"5e6eec40b84f248c9368017207b0b0f2c5dbd45e","unresolved":false,"context_lines":[{"line_number":2573,"context_line":"    with session.begin():"},{"line_number":2574,"context_line":"        # Add context for _process_volume_types_filters"},{"line_number":2575,"context_line":"        filters \u003d filters or {}"},{"line_number":2576,"context_line":"        filters[\u0027context\u0027] \u003d context"},{"line_number":2577,"context_line":"        # Generate the query"},{"line_number":2578,"context_line":"        query \u003d _generate_paginate_query(context, session, marker, limit,"},{"line_number":2579,"context_line":"                                         sort_keys, sort_dirs, filters, offset,"}],"source_content_type":"text/x-python","patch_set":12,"id":"fa69d971_9ad127d0","line":2576,"range":{"start_line":2576,"start_character":8,"end_line":2576,"end_character":36},"in_reply_to":"fa69d971_f12c25ad","updated":"2016-01-04 02:06:22.000000000","message":"Yes, this\u0027s because process_filters is designed with only two args, query and filters. Volume type is special one that it also needs the context, So I put the context in filters.","commit_id":"9b9fce6958647f01b5a7d074e73369dc85014325"},{"author":{"_account_id":11600,"name":"Michał Dulko","email":"michal.dulko@gmail.com","username":"dulek"},"change_message_id":"0c685bf349ddff2158ff7498822c7b1da12b7af6","unresolved":false,"context_lines":[{"line_number":2586,"context_line":""},{"line_number":2587,"context_line":"        rows \u003d query.all()"},{"line_number":2588,"context_line":"        if list_result:"},{"line_number":2589,"context_line":"            result \u003d []"},{"line_number":2590,"context_line":"            for row in rows:"},{"line_number":2591,"context_line":"                result.append(_dict_with_extra_specs_if_authorized(context,"},{"line_number":2592,"context_line":"                                                                   row))"},{"line_number":2593,"context_line":"            return result"},{"line_number":2594,"context_line":"        result \u003d {}"},{"line_number":2595,"context_line":"        for row in rows:"}],"source_content_type":"text/x-python","patch_set":12,"id":"fa69d971_110d393e","line":2592,"range":{"start_line":2589,"start_character":0,"end_line":2592,"end_character":72},"updated":"2015-12-31 12:31:38.000000000","message":"Why not simply:\n\n             result \u003d [_dict_with_extra_specs_if_authorized(context, row)\n                       for row in rows]\n\n?","commit_id":"9b9fce6958647f01b5a7d074e73369dc85014325"},{"author":{"_account_id":8846,"name":"Hao Wang","display_name":"Hao Wang","email":"sxmatch1986@gmail.com","username":"sxmatch"},"change_message_id":"5e6eec40b84f248c9368017207b0b0f2c5dbd45e","unresolved":false,"context_lines":[{"line_number":2586,"context_line":""},{"line_number":2587,"context_line":"        rows \u003d query.all()"},{"line_number":2588,"context_line":"        if list_result:"},{"line_number":2589,"context_line":"            result \u003d []"},{"line_number":2590,"context_line":"            for row in rows:"},{"line_number":2591,"context_line":"                result.append(_dict_with_extra_specs_if_authorized(context,"},{"line_number":2592,"context_line":"                                                                   row))"},{"line_number":2593,"context_line":"            return result"},{"line_number":2594,"context_line":"        result \u003d {}"},{"line_number":2595,"context_line":"        for row in rows:"}],"source_content_type":"text/x-python","patch_set":12,"id":"fa69d971_bad42bbd","line":2592,"range":{"start_line":2589,"start_character":0,"end_line":2592,"end_character":72},"in_reply_to":"fa69d971_110d393e","updated":"2016-01-04 02:06:22.000000000","message":"OKay.","commit_id":"9b9fce6958647f01b5a7d074e73369dc85014325"},{"author":{"_account_id":11600,"name":"Michał Dulko","email":"michal.dulko@gmail.com","username":"dulek"},"change_message_id":"0c685bf349ddff2158ff7498822c7b1da12b7af6","unresolved":false,"context_lines":[{"line_number":2591,"context_line":"                result.append(_dict_with_extra_specs_if_authorized(context,"},{"line_number":2592,"context_line":"                                                                   row))"},{"line_number":2593,"context_line":"            return result"},{"line_number":2594,"context_line":"        result \u003d {}"},{"line_number":2595,"context_line":"        for row in rows:"},{"line_number":2596,"context_line":"            result[row[\u0027name\u0027]] \u003d _dict_with_extra_specs_if_authorized(context,"},{"line_number":2597,"context_line":"                                                                       row)"},{"line_number":2598,"context_line":"        return result"},{"line_number":2599,"context_line":""},{"line_number":2600,"context_line":""}],"source_content_type":"text/x-python","patch_set":12,"id":"fa69d971_546e3fca","line":2597,"range":{"start_line":2594,"start_character":0,"end_line":2597,"end_character":75},"updated":"2015-12-31 12:31:38.000000000","message":"And this may be:\n\n             result \u003d {r[\u0027name\u0027]: _dict_with_extra_specs_if_authorized(\n                       context, r) for r in rows}","commit_id":"9b9fce6958647f01b5a7d074e73369dc85014325"},{"author":{"_account_id":8846,"name":"Hao Wang","display_name":"Hao Wang","email":"sxmatch1986@gmail.com","username":"sxmatch"},"change_message_id":"5e6eec40b84f248c9368017207b0b0f2c5dbd45e","unresolved":false,"context_lines":[{"line_number":2591,"context_line":"                result.append(_dict_with_extra_specs_if_authorized(context,"},{"line_number":2592,"context_line":"                                                                   row))"},{"line_number":2593,"context_line":"            return result"},{"line_number":2594,"context_line":"        result \u003d {}"},{"line_number":2595,"context_line":"        for row in rows:"},{"line_number":2596,"context_line":"            result[row[\u0027name\u0027]] \u003d _dict_with_extra_specs_if_authorized(context,"},{"line_number":2597,"context_line":"                                                                       row)"},{"line_number":2598,"context_line":"        return result"},{"line_number":2599,"context_line":""},{"line_number":2600,"context_line":""}],"source_content_type":"text/x-python","patch_set":12,"id":"fa69d971_bab98b7b","line":2597,"range":{"start_line":2594,"start_character":0,"end_line":2597,"end_character":75},"in_reply_to":"fa69d971_546e3fca","updated":"2016-01-04 02:06:22.000000000","message":"Done","commit_id":"9b9fce6958647f01b5a7d074e73369dc85014325"},{"author":{"_account_id":11600,"name":"Michał Dulko","email":"michal.dulko@gmail.com","username":"dulek"},"change_message_id":"0c685bf349ddff2158ff7498822c7b1da12b7af6","unresolved":false,"context_lines":[{"line_number":2613,"context_line":"    return result[0]"},{"line_number":2614,"context_line":""},{"line_number":2615,"context_line":""},{"line_number":2616,"context_line":"def _volume_type_get_object(context, id, session\u003dNone, inactive\u003dFalse,"},{"line_number":2617,"context_line":"                            expected_fields\u003dNone):"},{"line_number":2618,"context_line":"    read_deleted \u003d \"yes\" if inactive else \"no\""},{"line_number":2619,"context_line":"    result \u003d _volume_type_get_query("}],"source_content_type":"text/x-python","patch_set":12,"id":"fa69d971_d4b9cf2f","line":2616,"range":{"start_line":2616,"start_character":20,"end_line":2616,"end_character":27},"updated":"2015-12-31 12:31:38.000000000","message":"Object is a little confusing here - may be confused with versioned objects. How about db_object? And to be honest I don\u0027t understand why you\u0027re splitting these two?","commit_id":"9b9fce6958647f01b5a7d074e73369dc85014325"},{"author":{"_account_id":8846,"name":"Hao Wang","display_name":"Hao Wang","email":"sxmatch1986@gmail.com","username":"sxmatch"},"change_message_id":"5e6eec40b84f248c9368017207b0b0f2c5dbd45e","unresolved":false,"context_lines":[{"line_number":2613,"context_line":"    return result[0]"},{"line_number":2614,"context_line":""},{"line_number":2615,"context_line":""},{"line_number":2616,"context_line":"def _volume_type_get_object(context, id, session\u003dNone, inactive\u003dFalse,"},{"line_number":2617,"context_line":"                            expected_fields\u003dNone):"},{"line_number":2618,"context_line":"    read_deleted \u003d \"yes\" if inactive else \"no\""},{"line_number":2619,"context_line":"    result \u003d _volume_type_get_query("}],"source_content_type":"text/x-python","patch_set":12,"id":"fa69d971_fa34e3fb","line":2616,"range":{"start_line":2616,"start_character":20,"end_line":2616,"end_character":27},"in_reply_to":"fa69d971_d4b9cf2f","updated":"2016-01-04 02:06:22.000000000","message":"Sure.\n\nIn original _volume_type_get, we get the result from db first, and transform it to dict by using _dict_with_extra_specs_if_authorized, this will cause the db error in paginate querying, so I split these two to get the db result only.","commit_id":"9b9fce6958647f01b5a7d074e73369dc85014325"}],"cinder/objects/volume_type.py":[{"author":{"_account_id":11600,"name":"Michał Dulko","email":"michal.dulko@gmail.com","username":"dulek"},"change_message_id":"9d73b8d6c16ace37b690acde5f12b54460f0ca2d","unresolved":false,"context_lines":[{"line_number":108,"context_line":""},{"line_number":109,"context_line":"    child_versions \u003d {"},{"line_number":110,"context_line":"        \u00271.0\u0027: \u00271.0\u0027,"},{"line_number":111,"context_line":"        \u00271.1\u0027: \u00271.1\u0027,"},{"line_number":112,"context_line":"    }"},{"line_number":113,"context_line":""},{"line_number":114,"context_line":"    @base.remotable_classmethod"}],"source_content_type":"text/x-python","patch_set":8,"id":"1a7b0d38_e8a7f308","line":111,"range":{"start_line":111,"start_character":16,"end_line":111,"end_character":19},"updated":"2015-12-28 19:45:32.000000000","message":"I think this should be \u00271.1\u0027: \u00271.0\u0027, as for version 1.1 of VolumeTypeList we have 1.0 VolumeType object.","commit_id":"2b7cef2e31f613b251553b4f2cea8a96bcce82c6"},{"author":{"_account_id":8846,"name":"Hao Wang","display_name":"Hao Wang","email":"sxmatch1986@gmail.com","username":"sxmatch"},"change_message_id":"dac40bd4660790d8db9ed9c92273d895c3356c12","unresolved":false,"context_lines":[{"line_number":108,"context_line":""},{"line_number":109,"context_line":"    child_versions \u003d {"},{"line_number":110,"context_line":"        \u00271.0\u0027: \u00271.0\u0027,"},{"line_number":111,"context_line":"        \u00271.1\u0027: \u00271.1\u0027,"},{"line_number":112,"context_line":"    }"},{"line_number":113,"context_line":""},{"line_number":114,"context_line":"    @base.remotable_classmethod"}],"source_content_type":"text/x-python","patch_set":8,"id":"1a7b0d38_d4adee84","line":111,"range":{"start_line":111,"start_character":16,"end_line":111,"end_character":19},"in_reply_to":"1a7b0d38_e8a7f308","updated":"2015-12-29 03:06:06.000000000","message":"OK，got this.","commit_id":"2b7cef2e31f613b251553b4f2cea8a96bcce82c6"},{"author":{"_account_id":11600,"name":"Michał Dulko","email":"michal.dulko@gmail.com","username":"dulek"},"change_message_id":"f53eac0dfa4fdc5745b1a78ae004c7bbbdfa0bbf","unresolved":false,"context_lines":[{"line_number":100,"context_line":""},{"line_number":101,"context_line":"@base.CinderObjectRegistry.register"},{"line_number":102,"context_line":"class VolumeTypeList(base.ObjectListBase, base.CinderObject):"},{"line_number":103,"context_line":"    VERSION \u003d \u00271.1\u0027"},{"line_number":104,"context_line":""},{"line_number":105,"context_line":"    fields \u003d {"},{"line_number":106,"context_line":"        \u0027objects\u0027: fields.ListOfObjectsField(\u0027VolumeType\u0027),"}],"source_content_type":"text/x-python","patch_set":10,"id":"fa69d971_e93a18e7","line":103,"updated":"2015-12-30 14:24:36.000000000","message":"Having a comment describing what changed between 1.0 (Initial version) and 1.1 would be helpful.","commit_id":"e1f6e7d35d743bca5036d3b0d4b622c19cb9b6b9"},{"author":{"_account_id":8846,"name":"Hao Wang","display_name":"Hao Wang","email":"sxmatch1986@gmail.com","username":"sxmatch"},"change_message_id":"2d0dcd5fd4287bafd5a68b4cd97085a509d58c7b","unresolved":false,"context_lines":[{"line_number":100,"context_line":""},{"line_number":101,"context_line":"@base.CinderObjectRegistry.register"},{"line_number":102,"context_line":"class VolumeTypeList(base.ObjectListBase, base.CinderObject):"},{"line_number":103,"context_line":"    VERSION \u003d \u00271.1\u0027"},{"line_number":104,"context_line":""},{"line_number":105,"context_line":"    fields \u003d {"},{"line_number":106,"context_line":"        \u0027objects\u0027: fields.ListOfObjectsField(\u0027VolumeType\u0027),"}],"source_content_type":"text/x-python","patch_set":10,"id":"fa69d971_bcee92ea","line":103,"in_reply_to":"fa69d971_e93a18e7","updated":"2015-12-31 01:17:55.000000000","message":"Sure, will add this.","commit_id":"e1f6e7d35d743bca5036d3b0d4b622c19cb9b6b9"}],"cinder/tests/unit/objects/test_volume_type.py":[{"author":{"_account_id":11600,"name":"Michał Dulko","email":"michal.dulko@gmail.com","username":"dulek"},"change_message_id":"0c685bf349ddff2158ff7498822c7b1da12b7af6","unresolved":false,"context_lines":[{"line_number":101,"context_line":"        self.assertEqual(1, len(volume_types))"},{"line_number":102,"context_line":"        TestVolumeType._compare(self, db_volume_type, volume_types[0])"},{"line_number":103,"context_line":""},{"line_number":104,"context_line":"    @mock.patch(\u0027cinder.volume.volume_types.get_all_types\u0027)"},{"line_number":105,"context_line":"    def test_get_all_with_pagination(self, get_all_types):"},{"line_number":106,"context_line":"        db_volume_type \u003d fake_volume.fake_db_volume_type()"},{"line_number":107,"context_line":"        get_all_types.return_value \u003d {db_volume_type[\u0027name\u0027]: db_volume_type}"}],"source_content_type":"text/x-python","patch_set":12,"id":"fa69d971_54263f69","line":104,"range":{"start_line":104,"start_character":0,"end_line":104,"end_character":59},"updated":"2015-12-31 12:31:38.000000000","message":"This is basically the same test as above, just passing more parameters. Maybe you can assert if these were correctly passed to the mocked method?","commit_id":"9b9fce6958647f01b5a7d074e73369dc85014325"}]}
