)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":782,"name":"John Garbutt","email":"john@johngarbutt.com","username":"johngarbutt"},"change_message_id":"2165cfb4772e8f5855c6be3583d6b19e5e8867ca","unresolved":false,"context_lines":[{"line_number":4,"context_line":"Commit:     Mike Fedosin \u003cmfedosin@mirantis.com\u003e"},{"line_number":5,"context_line":"CommitDate: 2016-01-11 15:22:15 +0000"},{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Remove version hardcoding for \u0027detail\u0027, \u0027download\u0027 and \u0027delete\u0027 methods"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"This patch continues the big initiative to make Nova"},{"line_number":10,"context_line":"adopt Glance v2 API. In this patch \u0027detail\u0027, \u0027download\u0027"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":11,"id":"da6ed579_8140d7a6","line":7,"updated":"2016-01-13 10:41:02.000000000","message":"this sounds like three patches.","commit_id":"1dfc8212619faaee083b88c764e963c7c58bac53"},{"author":{"_account_id":11391,"name":"Mikhail Fedosin","email":"mfedosin@redhat.com","username":"fedosinme"},"change_message_id":"bbab32bc6d79a13d22938b8a2f5ca9990f2a2680","unresolved":false,"context_lines":[{"line_number":4,"context_line":"Commit:     Mike Fedosin \u003cmfedosin@mirantis.com\u003e"},{"line_number":5,"context_line":"CommitDate: 2016-01-11 15:22:15 +0000"},{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Remove version hardcoding for \u0027detail\u0027, \u0027download\u0027 and \u0027delete\u0027 methods"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"This patch continues the big initiative to make Nova"},{"line_number":10,"context_line":"adopt Glance v2 API. In this patch \u0027detail\u0027, \u0027download\u0027"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":11,"id":"9a68dd71_c624f7b0","line":7,"in_reply_to":"da6ed579_8140d7a6","updated":"2016-01-20 15:12:02.000000000","message":"Yes, but two of them are obvious. I squashed them to simplify support of this line of commits. We can split them in every moment.","commit_id":"1dfc8212619faaee083b88c764e963c7c58bac53"}],"nova/image/glance.py":[{"author":{"_account_id":8122,"name":"Cyril Roelandt","email":"cyril@redhat.com","username":"cyril.roelandt.enovance"},"change_message_id":"de00700190fb909caf4c9699fb73df0535c6ca9e","unresolved":false,"context_lines":[{"line_number":479,"context_line":"    # NOTE(vish): don\u0027t filter out private images"},{"line_number":480,"context_line":"    _params[\u0027filters\u0027].setdefault(\u0027is_public\u0027, \u0027none\u0027)"},{"line_number":481,"context_line":""},{"line_number":482,"context_line":"    if int(version) \u003d\u003d 2:"},{"line_number":483,"context_line":"        # adopt filters to be accepted by glance v2 api"},{"line_number":484,"context_line":"        filters \u003d _params[\u0027filters\u0027]"},{"line_number":485,"context_line":"        new_filters \u003d {}"}],"source_content_type":"text/x-python","patch_set":8,"id":"3a7e1126_42977890","line":482,"range":{"start_line":482,"start_character":20,"end_line":482,"end_character":22},"updated":"2015-12-17 10:52:27.000000000","message":"Why do we need to convert \"version\" to an int? This function already expects an int.","commit_id":"28a5ee75d230732760f10cda90a37cfd799e343d"},{"author":{"_account_id":8122,"name":"Cyril Roelandt","email":"cyril@redhat.com","username":"cyril.roelandt.enovance"},"change_message_id":"de00700190fb909caf4c9699fb73df0535c6ca9e","unresolved":false,"context_lines":[{"line_number":484,"context_line":"        filters \u003d _params[\u0027filters\u0027]"},{"line_number":485,"context_line":"        new_filters \u003d {}"},{"line_number":486,"context_line":""},{"line_number":487,"context_line":"        for filter in filters:"},{"line_number":488,"context_line":"            # remove \u0027property-\u0027 prefix from filters by custom properties"},{"line_number":489,"context_line":"            if filter.startswith(\u0027property-\u0027):"},{"line_number":490,"context_line":"                new_filters[filter.lstrip(\u0027property-\u0027)] \u003d filters[filter]"}],"source_content_type":"text/x-python","patch_set":8,"id":"3a7e1126_c2d04856","line":487,"range":{"start_line":487,"start_character":19,"end_line":487,"end_character":21},"updated":"2015-12-17 10:52:27.000000000","message":"\"filter\" is a built-in Python function, could we use \"filter_\" instead, or something like that?","commit_id":"28a5ee75d230732760f10cda90a37cfd799e343d"},{"author":{"_account_id":782,"name":"John Garbutt","email":"john@johngarbutt.com","username":"johngarbutt"},"change_message_id":"2165cfb4772e8f5855c6be3583d6b19e5e8867ca","unresolved":false,"context_lines":[{"line_number":346,"context_line":"            self._client.client \u003d self._client._create_onetime_client("},{"line_number":347,"context_line":"                    context, None)"},{"line_number":348,"context_line":""},{"line_number":349,"context_line":"        version \u003d self._client.client.version"},{"line_number":350,"context_line":"        params \u003d _extract_query_params(kwargs, version)"},{"line_number":351,"context_line":""},{"line_number":352,"context_line":"        try:"}],"source_content_type":"text/x-python","patch_set":11,"id":"da6ed579_e1eaf3ab","line":349,"updated":"2016-01-13 10:41:02.000000000","message":"Why can\u0027t we just save the version somewhere we can read it easily? Doesn\u0027t this create lots of extra REST API calls, just because we didn\u0027t save a value in the first place?","commit_id":"1dfc8212619faaee083b88c764e963c7c58bac53"},{"author":{"_account_id":11391,"name":"Mikhail Fedosin","email":"mfedosin@redhat.com","username":"fedosinme"},"change_message_id":"bbab32bc6d79a13d22938b8a2f5ca9990f2a2680","unresolved":false,"context_lines":[{"line_number":346,"context_line":"            self._client.client \u003d self._client._create_onetime_client("},{"line_number":347,"context_line":"                    context, None)"},{"line_number":348,"context_line":""},{"line_number":349,"context_line":"        version \u003d self._client.client.version"},{"line_number":350,"context_line":"        params \u003d _extract_query_params(kwargs, version)"},{"line_number":351,"context_line":""},{"line_number":352,"context_line":"        try:"}],"source_content_type":"text/x-python","patch_set":11,"id":"9a68dd71_e6733bb3","line":349,"in_reply_to":"da6ed579_e1eaf3ab","updated":"2016-01-20 15:12:02.000000000","message":"Yes, Sudipto did it in previous PS. I just have to take his changes and apply it here.","commit_id":"1dfc8212619faaee083b88c764e963c7c58bac53"},{"author":{"_account_id":782,"name":"John Garbutt","email":"john@johngarbutt.com","username":"johngarbutt"},"change_message_id":"2165cfb4772e8f5855c6be3583d6b19e5e8867ca","unresolved":false,"context_lines":[{"line_number":350,"context_line":"        params \u003d _extract_query_params(kwargs, version)"},{"line_number":351,"context_line":""},{"line_number":352,"context_line":"        try:"},{"line_number":353,"context_line":"            images \u003d self._client.call(context, None, \u0027list\u0027, **params)"},{"line_number":354,"context_line":"        except Exception:"},{"line_number":355,"context_line":"            _reraise_translated_exception()"},{"line_number":356,"context_line":""}],"source_content_type":"text/x-python","patch_set":11,"id":"da6ed579_61a60355","line":353,"updated":"2016-01-13 10:41:02.000000000","message":"it feels like we should maybe pass the version down into this, but I guess we are trying to stop that.","commit_id":"1dfc8212619faaee083b88c764e963c7c58bac53"},{"author":{"_account_id":11391,"name":"Mikhail Fedosin","email":"mfedosin@redhat.com","username":"fedosinme"},"change_message_id":"bbab32bc6d79a13d22938b8a2f5ca9990f2a2680","unresolved":false,"context_lines":[{"line_number":350,"context_line":"        params \u003d _extract_query_params(kwargs, version)"},{"line_number":351,"context_line":""},{"line_number":352,"context_line":"        try:"},{"line_number":353,"context_line":"            images \u003d self._client.call(context, None, \u0027list\u0027, **params)"},{"line_number":354,"context_line":"        except Exception:"},{"line_number":355,"context_line":"            _reraise_translated_exception()"},{"line_number":356,"context_line":""}],"source_content_type":"text/x-python","patch_set":11,"id":"9a68dd71_86935fa3","line":353,"in_reply_to":"da6ed579_61a60355","updated":"2016-01-20 15:12:02.000000000","message":"It\u0027s exactly what we want. When all work is done we will remove \u0027version\u0027 param from there.","commit_id":"1dfc8212619faaee083b88c764e963c7c58bac53"},{"author":{"_account_id":782,"name":"John Garbutt","email":"john@johngarbutt.com","username":"johngarbutt"},"change_message_id":"2165cfb4772e8f5855c6be3583d6b19e5e8867ca","unresolved":false,"context_lines":[{"line_number":503,"context_line":"        return True"},{"line_number":504,"context_line":""},{"line_number":505,"context_line":""},{"line_number":506,"context_line":"def _extract_query_params(params, version\u003d2):"},{"line_number":507,"context_line":"    _params \u003d {}"},{"line_number":508,"context_line":"    accepted_params \u003d (\u0027filters\u0027, \u0027marker\u0027, \u0027limit\u0027,"},{"line_number":509,"context_line":"                       \u0027page_size\u0027, \u0027sort_key\u0027, \u0027sort_dir\u0027)"}],"source_content_type":"text/x-python","patch_set":11,"id":"da6ed579_e101936b","line":506,"updated":"2016-01-13 10:41:02.000000000","message":"surely we should not have a default for the version parameter?\n\n(PS, if we really, really, need a default, should it not keep the same behaviour it had before?)","commit_id":"1dfc8212619faaee083b88c764e963c7c58bac53"},{"author":{"_account_id":11391,"name":"Mikhail Fedosin","email":"mfedosin@redhat.com","username":"fedosinme"},"change_message_id":"bbab32bc6d79a13d22938b8a2f5ca9990f2a2680","unresolved":false,"context_lines":[{"line_number":503,"context_line":"        return True"},{"line_number":504,"context_line":""},{"line_number":505,"context_line":""},{"line_number":506,"context_line":"def _extract_query_params(params, version\u003d2):"},{"line_number":507,"context_line":"    _params \u003d {}"},{"line_number":508,"context_line":"    accepted_params \u003d (\u0027filters\u0027, \u0027marker\u0027, \u0027limit\u0027,"},{"line_number":509,"context_line":"                       \u0027page_size\u0027, \u0027sort_key\u0027, \u0027sort_dir\u0027)"}],"source_content_type":"text/x-python","patch_set":11,"id":"9a68dd71_06d8cf52","line":506,"in_reply_to":"da6ed579_e101936b","updated":"2016-01-20 15:12:02.000000000","message":"Will be done.","commit_id":"1dfc8212619faaee083b88c764e963c7c58bac53"},{"author":{"_account_id":782,"name":"John Garbutt","email":"john@johngarbutt.com","username":"johngarbutt"},"change_message_id":"2165cfb4772e8f5855c6be3583d6b19e5e8867ca","unresolved":false,"context_lines":[{"line_number":516,"context_line":"    # NOTE(vish): don\u0027t filter out private images"},{"line_number":517,"context_line":"    _params[\u0027filters\u0027].setdefault(\u0027is_public\u0027, \u0027none\u0027)"},{"line_number":518,"context_line":""},{"line_number":519,"context_line":"    if int(version) \u003d\u003d 2:"},{"line_number":520,"context_line":"        # adopt filters to be accepted by glance v2 api"},{"line_number":521,"context_line":"        filters \u003d _params[\u0027filters\u0027]"},{"line_number":522,"context_line":"        new_filters \u003d {}"}],"source_content_type":"text/x-python","patch_set":11,"id":"da6ed579_a1fe3b36","line":519,"updated":"2016-01-13 10:41:02.000000000","message":"Seems like another place where we expect a TODO to move these complications into the glanceclient eventually?","commit_id":"1dfc8212619faaee083b88c764e963c7c58bac53"},{"author":{"_account_id":11391,"name":"Mikhail Fedosin","email":"mfedosin@redhat.com","username":"fedosinme"},"change_message_id":"bbab32bc6d79a13d22938b8a2f5ca9990f2a2680","unresolved":false,"context_lines":[{"line_number":516,"context_line":"    # NOTE(vish): don\u0027t filter out private images"},{"line_number":517,"context_line":"    _params[\u0027filters\u0027].setdefault(\u0027is_public\u0027, \u0027none\u0027)"},{"line_number":518,"context_line":""},{"line_number":519,"context_line":"    if int(version) \u003d\u003d 2:"},{"line_number":520,"context_line":"        # adopt filters to be accepted by glance v2 api"},{"line_number":521,"context_line":"        filters \u003d _params[\u0027filters\u0027]"},{"line_number":522,"context_line":"        new_filters \u003d {}"}],"source_content_type":"text/x-python","patch_set":11,"id":"9a68dd71_045e87e9","line":519,"in_reply_to":"da6ed579_a1fe3b36","updated":"2016-01-20 15:12:02.000000000","message":"Maybe, but not now...","commit_id":"1dfc8212619faaee083b88c764e963c7c58bac53"},{"author":{"_account_id":8122,"name":"Cyril Roelandt","email":"cyril@redhat.com","username":"cyril.roelandt.enovance"},"change_message_id":"62481ce4e41dd1a158a9c01ebc5ae6d24995b10f","unresolved":false,"context_lines":[{"line_number":489,"context_line":"        filters \u003d _params[\u0027filters\u0027]"},{"line_number":490,"context_line":"        new_filters \u003d {}"},{"line_number":491,"context_line":""},{"line_number":492,"context_line":"        for filter in filters:"},{"line_number":493,"context_line":"            # remove \u0027property-\u0027 prefix from filters by custom properties"},{"line_number":494,"context_line":"            if filter.startswith(\u0027property-\u0027):"},{"line_number":495,"context_line":"                new_filters[filter.lstrip(\u0027property-\u0027)] \u003d filters[filter]"}],"source_content_type":"text/x-python","patch_set":12,"id":"9a68dd71_a96bd4f0","line":492,"range":{"start_line":492,"start_character":21,"end_line":492,"end_character":22},"updated":"2016-01-26 11:14:37.000000000","message":"\"filter\" is a built-in Python function, could we use \"filter_\" instead, or something like that?","commit_id":"8d9ae1e4901373b97438e5b04ac97406c5494b23"}],"nova/tests/unit/image/test_glance.py":[{"author":{"_account_id":782,"name":"John Garbutt","email":"john@johngarbutt.com","username":"johngarbutt"},"change_message_id":"9fc645d449ace793806995f3ac62abc64ad0315b","unresolved":false,"context_lines":[{"line_number":1348,"context_line":"        ext_query_mock.return_value \u003d params"},{"line_number":1349,"context_line":"        trans_from_mock.return_value \u003d mock.sentinel.trans_from"},{"line_number":1350,"context_line":"        client \u003d mock.MagicMock()"},{"line_number":1351,"context_line":"        client.call.return_value \u003d [mock.sentinel.images_0]"},{"line_number":1352,"context_line":"        ctx \u003d mock.sentinel.ctx"},{"line_number":1353,"context_line":"        service \u003d glance.GlanceImageService(client)"},{"line_number":1354,"context_line":"        images \u003d service.detail(ctx, **params)"}],"source_content_type":"text/x-python","patch_set":1,"id":"da6ed579_e1ae7397","line":1351,"updated":"2016-01-13 10:33:02.000000000","message":"Should we not be changing this test so its returning a v2 style image, so we test we still get the same output from the code as when it was given the v1 style. We should really be testing both directions, I feel?\n\nOr is this somehow all mocked out at this point?","commit_id":"f2f3462ec167ca1ec22999feaa03ca77f996a28e"},{"author":{"_account_id":782,"name":"John Garbutt","email":"john@johngarbutt.com","username":"johngarbutt"},"change_message_id":"2165cfb4772e8f5855c6be3583d6b19e5e8867ca","unresolved":false,"context_lines":[{"line_number":1163,"context_line":"        client.call.assert_called_once_with(ctx, None, \u0027list\u0027,"},{"line_number":1164,"context_line":"                                            filters\u003dexpected_filters,"},{"line_number":1165,"context_line":"                                            page_size\u003d5,"},{"line_number":1166,"context_line":"                                            limit\u003d10)"},{"line_number":1167,"context_line":""},{"line_number":1168,"context_line":"    @mock.patch(\u0027nova.image.glance._reraise_translated_exception\u0027)"},{"line_number":1169,"context_line":"    @mock.patch(\u0027nova.image.glance._extract_query_params\u0027)"}],"source_content_type":"text/x-python","patch_set":11,"id":"da6ed579_a185dbad","line":1166,"updated":"2016-01-13 10:41:02.000000000","message":"should we not be checking this with different versions?","commit_id":"1dfc8212619faaee083b88c764e963c7c58bac53"},{"author":{"_account_id":11391,"name":"Mikhail Fedosin","email":"mfedosin@redhat.com","username":"fedosinme"},"change_message_id":"bbab32bc6d79a13d22938b8a2f5ca9990f2a2680","unresolved":false,"context_lines":[{"line_number":1163,"context_line":"        client.call.assert_called_once_with(ctx, None, \u0027list\u0027,"},{"line_number":1164,"context_line":"                                            filters\u003dexpected_filters,"},{"line_number":1165,"context_line":"                                            page_size\u003d5,"},{"line_number":1166,"context_line":"                                            limit\u003d10)"},{"line_number":1167,"context_line":""},{"line_number":1168,"context_line":"    @mock.patch(\u0027nova.image.glance._reraise_translated_exception\u0027)"},{"line_number":1169,"context_line":"    @mock.patch(\u0027nova.image.glance._extract_query_params\u0027)"}],"source_content_type":"text/x-python","patch_set":11,"id":"9a68dd71_c425cf5c","line":1166,"in_reply_to":"da6ed579_a185dbad","updated":"2016-01-20 15:12:02.000000000","message":"Okay, I\u0027ll add the test","commit_id":"1dfc8212619faaee083b88c764e963c7c58bac53"}]}
