)]}'
{"ceilometer/pipeline.py":[{"author":{"_account_id":2472,"name":"Doug Hellmann","email":"dhellmann@redhat.com","username":"doug-hellmann"},"change_message_id":"c2327a5ebf5430540a0091c87ba3f4f7d0a6189c","unresolved":false,"context_lines":[{"line_number":228,"context_line":""},{"line_number":229,"context_line":"    def publish_counters(self, ctxt, counters, source):"},{"line_number":230,"context_line":"        counter_names \u003d set(counter.name for counter in counters)"},{"line_number":231,"context_line":"        counters_grouped_by_name \u003d [[counter for counter in counters"},{"line_number":232,"context_line":"                                     if counter.name \u003d\u003d name]"},{"line_number":233,"context_line":"                                    for name in counter_names]"},{"line_number":234,"context_line":""}],"source_content_type":"text/x-python","patch_set":7,"id":"AAAAM3%2F%2FFK0%3D","line":231,"updated":"2013-02-07 19:32:12.000000000","message":"Use itertools.groupby instead of writing your own.\n\nhttp://docs.python.org/2/library/itertools.html#itertools.groupby","commit_id":"ef2a47417c58d3691caa1ce5b41be7167b80683d"},{"author":{"_account_id":1669,"name":"Julien Danjou","display_name":"jd","email":"julien@danjou.info","username":"jdanjou"},"change_message_id":"5848ae232ea360f238d9c312c4a76ea18e725dc9","unresolved":false,"context_lines":[{"line_number":228,"context_line":""},{"line_number":229,"context_line":"    def publish_counters(self, ctxt, counters, source):"},{"line_number":230,"context_line":"        counter_names \u003d set(counter.name for counter in counters)"},{"line_number":231,"context_line":"        counters_grouped_by_name \u003d [[counter for counter in counters"},{"line_number":232,"context_line":"                                     if counter.name \u003d\u003d name]"},{"line_number":233,"context_line":"                                    for name in counter_names]"},{"line_number":234,"context_line":""}],"source_content_type":"text/x-python","patch_set":7,"id":"AAAAM3%2F%2FBfc%3D","line":231,"in_reply_to":"AAAAM3%2F%2FFK0%3D","updated":"2013-02-11 10:36:20.000000000","message":"Didn\u0027t know about that, awesome.","commit_id":"ef2a47417c58d3691caa1ce5b41be7167b80683d"}],"ceilometer/publish.py":[{"author":{"_account_id":4491,"name":"Lianhao Lu","email":"llh_misc@outlook.com","username":"lianhao-lu"},"change_message_id":"4daf34017bfef85c6b880f8444d9e728f01300b6","unresolved":false,"context_lines":[{"line_number":67,"context_line":"    counter_names \u003d set(meter[\u0027counter_name\u0027] for meter in meters)"},{"line_number":68,"context_line":"    meters_grouped_by_name \u003d [[meter for meter in meters"},{"line_number":69,"context_line":"                               if meter[\u0027counter_name\u0027] \u003d\u003d name]"},{"line_number":70,"context_line":"                              for name in counter_names]"},{"line_number":71,"context_line":""},{"line_number":72,"context_line":"    for meters in meters_grouped_by_name:"},{"line_number":73,"context_line":"        msg \u003d {"}],"source_content_type":"text/x-python","patch_set":4,"id":"AAAAM3%2F%2FGnU%3D","line":70,"updated":"2013-02-07 02:00:16.000000000","message":"How about putting all the generations of \"meters\", \"counter_names\", \"meters_grouped_by_name\" into a single \"for counter in coutners\" iteration, to avoid multiple iteration?","commit_id":"23ae7d878c0bc429bb15e0dfa62f7c4bc351e4e4"},{"author":{"_account_id":1669,"name":"Julien Danjou","display_name":"jd","email":"julien@danjou.info","username":"jdanjou"},"change_message_id":"9849c292a818b11c93876b541909f4225665937e","unresolved":false,"context_lines":[{"line_number":67,"context_line":"    counter_names \u003d set(meter[\u0027counter_name\u0027] for meter in meters)"},{"line_number":68,"context_line":"    meters_grouped_by_name \u003d [[meter for meter in meters"},{"line_number":69,"context_line":"                               if meter[\u0027counter_name\u0027] \u003d\u003d name]"},{"line_number":70,"context_line":"                              for name in counter_names]"},{"line_number":71,"context_line":""},{"line_number":72,"context_line":"    for meters in meters_grouped_by_name:"},{"line_number":73,"context_line":"        msg \u003d {"}],"source_content_type":"text/x-python","patch_set":4,"id":"AAAAM3%2F%2FFq0%3D","line":70,"in_reply_to":"AAAAM3%2F%2FGnU%3D","updated":"2013-02-07 14:18:01.000000000","message":"I can\u0027t put meters_grouped_by_name in the same iteration as the 2 first one since it needs to know the full counter name list.\n\nI did it for the 2 others though, it\u0027s more verbose, but it do only iteration, so it might be a good idea.","commit_id":"23ae7d878c0bc429bb15e0dfa62f7c4bc351e4e4"}],"ceilometer/publisher/meter_publish.py":[{"author":{"_account_id":2472,"name":"Doug Hellmann","email":"dhellmann@redhat.com","username":"doug-hellmann"},"change_message_id":"c2327a5ebf5430540a0091c87ba3f4f7d0a6189c","unresolved":false,"context_lines":[{"line_number":54,"context_line":"        :param source: counter source"},{"line_number":55,"context_line":"        \"\"\""},{"line_number":56,"context_line":""},{"line_number":57,"context_line":"        meters \u003d defaultdict(list)"},{"line_number":58,"context_line":"        for counter in counters:"},{"line_number":59,"context_line":"            meter \u003d meter_api.meter_message_from_counter("},{"line_number":60,"context_line":"                counter,"}],"source_content_type":"text/x-python","patch_set":7,"id":"AAAAM3%2F%2FFKg%3D","line":57,"updated":"2013-02-07 19:32:12.000000000","message":"I think this could also be handled using itertools.groupby and a generator expression to convert from counters to meters.","commit_id":"ef2a47417c58d3691caa1ce5b41be7167b80683d"},{"author":{"_account_id":1669,"name":"Julien Danjou","display_name":"jd","email":"julien@danjou.info","username":"jdanjou"},"change_message_id":"5848ae232ea360f238d9c312c4a76ea18e725dc9","unresolved":false,"context_lines":[{"line_number":54,"context_line":"        :param source: counter source"},{"line_number":55,"context_line":"        \"\"\""},{"line_number":56,"context_line":""},{"line_number":57,"context_line":"        meters \u003d defaultdict(list)"},{"line_number":58,"context_line":"        for counter in counters:"},{"line_number":59,"context_line":"            meter \u003d meter_api.meter_message_from_counter("},{"line_number":60,"context_line":"                counter,"}],"source_content_type":"text/x-python","patch_set":7,"id":"AAAAM3%2F%2FBfY%3D","line":57,"in_reply_to":"AAAAM3%2F%2FFKg%3D","updated":"2013-02-11 10:36:20.000000000","message":"Done","commit_id":"ef2a47417c58d3691caa1ce5b41be7167b80683d"},{"author":{"_account_id":4715,"name":"Angus Salkeld","email":"asalkeld@redhat.com","username":"asalkeld"},"change_message_id":"9f22362cd50bf2fdf53a72cb158f663e1ca81d09","unresolved":false,"context_lines":[{"line_number":75,"context_line":"                lambda m: m[\u0027counter_name\u0027]):"},{"line_number":76,"context_line":"            msg \u003d {"},{"line_number":77,"context_line":"                \u0027method\u0027: \u0027record_metering_data\u0027,"},{"line_number":78,"context_line":"                \u0027version\u0027: \u00271.0\u0027,"},{"line_number":79,"context_line":"                \u0027args\u0027: {\u0027data\u0027: list(meter_list)},"},{"line_number":80,"context_line":"            }"},{"line_number":81,"context_line":"            rpc.cast(context, topic + \u0027.\u0027 + meter_name, msg)"}],"source_content_type":"text/x-python","patch_set":8,"id":"AAAAM3%2F%2FBaE%3D","line":78,"updated":"2013-02-11 12:08:29.000000000","message":"Isn\u0027t this a change in the format and therefore a bump in the message version?\nOr does it only change after grizzly?","commit_id":"59b5a5a488946b0d6e1f8d239a9cada21201c320"},{"author":{"_account_id":1669,"name":"Julien Danjou","display_name":"jd","email":"julien@danjou.info","username":"jdanjou"},"change_message_id":"346d95f0b37cf5d4e5e86756f524c2258356baf3","unresolved":false,"context_lines":[{"line_number":75,"context_line":"                lambda m: m[\u0027counter_name\u0027]):"},{"line_number":76,"context_line":"            msg \u003d {"},{"line_number":77,"context_line":"                \u0027method\u0027: \u0027record_metering_data\u0027,"},{"line_number":78,"context_line":"                \u0027version\u0027: \u00271.0\u0027,"},{"line_number":79,"context_line":"                \u0027args\u0027: {\u0027data\u0027: list(meter_list)},"},{"line_number":80,"context_line":"            }"},{"line_number":81,"context_line":"            rpc.cast(context, topic + \u0027.\u0027 + meter_name, msg)"}],"source_content_type":"text/x-python","patch_set":8,"id":"AAAAM3%2F%2FBSA%3D","line":78,"in_reply_to":"AAAAM3%2F%2FBSs%3D","updated":"2013-02-11 14:12:13.000000000","message":"The version 1.0 is the RPC API version, indeed, not ours. It\u0027s about the envelope format.","commit_id":"59b5a5a488946b0d6e1f8d239a9cada21201c320"},{"author":{"_account_id":2472,"name":"Doug Hellmann","email":"dhellmann@redhat.com","username":"doug-hellmann"},"change_message_id":"5dae164520811b7af6af67b687dde3363874aae7","unresolved":false,"context_lines":[{"line_number":75,"context_line":"                lambda m: m[\u0027counter_name\u0027]):"},{"line_number":76,"context_line":"            msg \u003d {"},{"line_number":77,"context_line":"                \u0027method\u0027: \u0027record_metering_data\u0027,"},{"line_number":78,"context_line":"                \u0027version\u0027: \u00271.0\u0027,"},{"line_number":79,"context_line":"                \u0027args\u0027: {\u0027data\u0027: list(meter_list)},"},{"line_number":80,"context_line":"            }"},{"line_number":81,"context_line":"            rpc.cast(context, topic + \u0027.\u0027 + meter_name, msg)"}],"source_content_type":"text/x-python","patch_set":8,"id":"AAAAM3%2F%2FBSs%3D","line":78,"in_reply_to":"AAAAM3%2F%2FBX4%3D","updated":"2013-02-11 14:07:53.000000000","message":"I think what Angus is saying is that the contents of the meter messages being sent are different. Does that version number correspond to the message body/arguments, or does it apply to the envelope added by the RPC library?","commit_id":"59b5a5a488946b0d6e1f8d239a9cada21201c320"},{"author":{"_account_id":1669,"name":"Julien Danjou","display_name":"jd","email":"julien@danjou.info","username":"jdanjou"},"change_message_id":"c95ce2ff0915e6adc70dece29ef01e9e27403aef","unresolved":false,"context_lines":[{"line_number":75,"context_line":"                lambda m: m[\u0027counter_name\u0027]):"},{"line_number":76,"context_line":"            msg \u003d {"},{"line_number":77,"context_line":"                \u0027method\u0027: \u0027record_metering_data\u0027,"},{"line_number":78,"context_line":"                \u0027version\u0027: \u00271.0\u0027,"},{"line_number":79,"context_line":"                \u0027args\u0027: {\u0027data\u0027: list(meter_list)},"},{"line_number":80,"context_line":"            }"},{"line_number":81,"context_line":"            rpc.cast(context, topic + \u0027.\u0027 + meter_name, msg)"}],"source_content_type":"text/x-python","patch_set":8,"id":"AAAAM3%2F%2FBX4%3D","line":78,"in_reply_to":"AAAAM3%2F%2FBaE%3D","updated":"2013-02-11 12:35:57.000000000","message":"No, format version will change after Grizzly (and is unrelated to this change actually).","commit_id":"59b5a5a488946b0d6e1f8d239a9cada21201c320"}],"ceilometer/tests/base.py":[{"author":{"_account_id":4573,"name":"yunhong-jiang","email":"yunhong.jiang@intel.com","username":"yunhong-jiang"},"change_message_id":"f43aaa670ec92b95b2eb74f34437aa83a0dd5f44","unresolved":false,"context_lines":[{"line_number":20,"context_line":"\"\"\""},{"line_number":21,"context_line":""},{"line_number":22,"context_line":"import unittest2"},{"line_number":23,"context_line":""},{"line_number":24,"context_line":"import mox"},{"line_number":25,"context_line":"import stubout"},{"line_number":26,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAM3%2F%2FJ9E%3D","line":23,"updated":"2013-02-05 11:14:07.000000000","message":"A bit curios, why do we need this change? Is it for assertIn() which I noticed is new in 2.7 version.","commit_id":"43022d035b9933224a35e851a10d606a6ed0d01e"}],"tests/test_publish.py":[{"author":{"_account_id":4573,"name":"yunhong-jiang","email":"yunhong.jiang@intel.com","username":"yunhong-jiang"},"change_message_id":"35c3582a524b62d909d6c55afaeb429a18dd5e25","unresolved":false,"context_lines":[{"line_number":102,"context_line":"            \u0027not-so-secret\u0027,"},{"line_number":103,"context_line":"            \u0027test\u0027,"},{"line_number":104,"context_line":"        )"},{"line_number":105,"context_line":""},{"line_number":106,"context_line":"    def test_published(self):"},{"line_number":107,"context_line":"        self.assertEqual(len(self.published), 4)"},{"line_number":108,"context_line":"        for topic, rpc_call in self.published:"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAM3%2F%2FJ94%3D","line":105,"updated":"2013-02-05 11:10:17.000000000","message":"I noticed that publish_counter() still be supported with your patch, so would it be better to leave one case for it?","commit_id":"43022d035b9933224a35e851a10d606a6ed0d01e"}]}
