)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":6676,"name":"zqfan","email":"aji.zqfan@gmail.com","username":"aji-zqfan"},"change_message_id":"00a4b9f7b267a1bed946247c8305faa839f16a41","unresolved":false,"context_lines":[{"line_number":7,"context_line":"Fix signature validation failure when using qpid message queue."},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"When using qpid message queue, the metering message will get"},{"line_number":10,"context_line":"sinature validation failure. This change adds a json dump and"},{"line_number":11,"context_line":"loads action to avoid this issue from happening."},{"line_number":12,"context_line":""},{"line_number":13,"context_line":"Closes-Bug: 1373356"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":1,"id":"da9df570_e24b0b85","line":10,"updated":"2014-09-24 17:08:36.000000000","message":"s/sinature/signature/","commit_id":"ba4b819b7c59d2b8e7ce4203d933c230b1278926"},{"author":{"_account_id":6676,"name":"zqfan","email":"aji.zqfan@gmail.com","username":"aji-zqfan"},"change_message_id":"00a4b9f7b267a1bed946247c8305faa839f16a41","unresolved":false,"context_lines":[{"line_number":10,"context_line":"sinature validation failure. This change adds a json dump and"},{"line_number":11,"context_line":"loads action to avoid this issue from happening."},{"line_number":12,"context_line":""},{"line_number":13,"context_line":"Closes-Bug: 1373356"},{"line_number":14,"context_line":""},{"line_number":15,"context_line":"Change-Id: Ia23af789460ad8597867902f713b8a78f4a09e06"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":1,"id":"da9df570_825a3f4e","line":13,"updated":"2014-09-24 17:08:36.000000000","message":"usually, the closes-bug tag will after change-id tag, and they are both in last paragraph, so at least delete L14","commit_id":"ba4b819b7c59d2b8e7ce4203d933c230b1278926"},{"author":{"_account_id":3012,"name":"Dina Belova","email":"dbelova@mirantis.com","username":"dbelova"},"change_message_id":"b96d5c6e54205fc02c0f54d10184c56df4c64a77","unresolved":false,"context_lines":[{"line_number":9,"context_line":"When using qpid message queue, the metering message will get"},{"line_number":10,"context_line":"signature validation failure because of extra unicode encoding"},{"line_number":11,"context_line":"given by json loads. This change peels off unicode of the message"},{"line_number":12,"context_line":"so that this issue can be avoid."},{"line_number":13,"context_line":""},{"line_number":14,"context_line":"Change-Id: Ia23af789460ad8597867902f713b8a78f4a09e06"},{"line_number":15,"context_line":"Closes-Bug: 1373356"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":6,"id":"baa201ad_6594178b","line":12,"range":{"start_line":12,"start_character":26,"end_line":12,"end_character":31},"updated":"2014-10-08 08:41:20.000000000","message":"avoided","commit_id":"1f442441c78296af37269c333693d2dfd2cb652f"}],"ceilometer/publisher/utils.py":[{"author":{"_account_id":6676,"name":"zqfan","email":"aji.zqfan@gmail.com","username":"aji-zqfan"},"change_message_id":"00a4b9f7b267a1bed946247c8305faa839f16a41","unresolved":false,"context_lines":[{"line_number":129,"context_line":"    # Do this step to make the msg dict encoded to unicode"},{"line_number":130,"context_line":"    # to avoid possible signature validation failure after"},{"line_number":131,"context_line":"    # casted back from qpid message queue."},{"line_number":132,"context_line":"    msg \u003d json.dumps(msg)"},{"line_number":133,"context_line":"    msg \u003d json.loads(msg)"},{"line_number":134,"context_line":"    msg[\u0027message_signature\u0027] \u003d compute_signature(msg, secret)"},{"line_number":135,"context_line":"    return msg"}],"source_content_type":"text/x-python","patch_set":1,"id":"da9df570_bd5e8610","line":132,"updated":"2014-09-24 17:08:36.000000000","message":"json not imported","commit_id":"ba4b819b7c59d2b8e7ce4203d933c230b1278926"},{"author":{"_account_id":10987,"name":"Igor Degtiarov","username":"tovstun","inactive":true},"change_message_id":"340ffd20c9bcae78a097d5ec2cd3f9014be33859","unresolved":false,"context_lines":[{"line_number":90,"context_line":"    compare_digest \u003d besteffort_compare_digest"},{"line_number":91,"context_line":""},{"line_number":92,"context_line":""},{"line_number":93,"context_line":"def _decode_unicode(input):"},{"line_number":94,"context_line":"    if isinstance(input, dict):"},{"line_number":95,"context_line":"        temp \u003d {}"},{"line_number":96,"context_line":"        for key, value in input.iteritems():"}],"source_content_type":"text/x-python","patch_set":3,"id":"baa201ad_7238eda0","line":93,"updated":"2014-10-01 14:07:04.000000000","message":"This function seems to be useful for other modules, so probably will be better move it to ceilometer/utils and don\u0027t name as internal one.","commit_id":"6cd8b386df984ecb24f165b24dc7531813fbc1f5"},{"author":{"_account_id":10327,"name":"Feng Xi Yan","email":"yanfengxi@cn.ibm.com","username":"yanfengxi"},"change_message_id":"33280b7a98514b5d8f417cbdec7aed40904c0b83","unresolved":false,"context_lines":[{"line_number":90,"context_line":"    compare_digest \u003d besteffort_compare_digest"},{"line_number":91,"context_line":""},{"line_number":92,"context_line":""},{"line_number":93,"context_line":"def _decode_unicode(input):"},{"line_number":94,"context_line":"    if isinstance(input, dict):"},{"line_number":95,"context_line":"        temp \u003d {}"},{"line_number":96,"context_line":"        for key, value in input.iteritems():"}],"source_content_type":"text/x-python","patch_set":3,"id":"baa201ad_ea6456ba","line":93,"in_reply_to":"baa201ad_7238eda0","updated":"2014-10-08 08:09:35.000000000","message":"Thanks!\nDone.","commit_id":"6cd8b386df984ecb24f165b24dc7531813fbc1f5"}],"ceilometer/utils.py":[{"author":{"_account_id":10987,"name":"Igor Degtiarov","username":"tovstun","inactive":true},"change_message_id":"96a30fee1159e6648be4f761124cc1fd5a3e2026","unresolved":false,"context_lines":[{"line_number":60,"context_line":"        for key, value in six.iteritems(input):"},{"line_number":61,"context_line":"            temp[decode_unicode(key)] \u003d decode_unicode(value)"},{"line_number":62,"context_line":"        return temp"},{"line_number":63,"context_line":"    elif isinstance(input, (tuple, list)):"},{"line_number":64,"context_line":"        return [decode_unicode(element) for element in input]"},{"line_number":65,"context_line":"    elif isinstance(input, unicode):"},{"line_number":66,"context_line":"        return input.encode(\u0027utf-8\u0027)"}],"source_content_type":"text/x-python","patch_set":6,"id":"baa201ad_651ed70d","line":63,"updated":"2014-10-08 08:49:41.000000000","message":"If we get tuple, it would be nice to return a tuple not list. What do you think?","commit_id":"1f442441c78296af37269c333693d2dfd2cb652f"},{"author":{"_account_id":10327,"name":"Feng Xi Yan","email":"yanfengxi@cn.ibm.com","username":"yanfengxi"},"change_message_id":"5956758f1b619c2430e3b5946119b5c56df825bd","unresolved":false,"context_lines":[{"line_number":60,"context_line":"        for key, value in six.iteritems(input):"},{"line_number":61,"context_line":"            temp[decode_unicode(key)] \u003d decode_unicode(value)"},{"line_number":62,"context_line":"        return temp"},{"line_number":63,"context_line":"    elif isinstance(input, (tuple, list)):"},{"line_number":64,"context_line":"        return [decode_unicode(element) for element in input]"},{"line_number":65,"context_line":"    elif isinstance(input, unicode):"},{"line_number":66,"context_line":"        return input.encode(\u0027utf-8\u0027)"}],"source_content_type":"text/x-python","patch_set":6,"id":"baa201ad_60d965f2","line":63,"in_reply_to":"baa201ad_20eafdab","updated":"2014-10-08 09:40:10.000000000","message":"Sounds right. I will change it.","commit_id":"1f442441c78296af37269c333693d2dfd2cb652f"},{"author":{"_account_id":10327,"name":"Feng Xi Yan","email":"yanfengxi@cn.ibm.com","username":"yanfengxi"},"change_message_id":"8947733762607f83971e4270be00685b4ba5393a","unresolved":false,"context_lines":[{"line_number":60,"context_line":"        for key, value in six.iteritems(input):"},{"line_number":61,"context_line":"            temp[decode_unicode(key)] \u003d decode_unicode(value)"},{"line_number":62,"context_line":"        return temp"},{"line_number":63,"context_line":"    elif isinstance(input, (tuple, list)):"},{"line_number":64,"context_line":"        return [decode_unicode(element) for element in input]"},{"line_number":65,"context_line":"    elif isinstance(input, unicode):"},{"line_number":66,"context_line":"        return input.encode(\u0027utf-8\u0027)"}],"source_content_type":"text/x-python","patch_set":6,"id":"baa201ad_1c1febb8","line":63,"in_reply_to":"baa201ad_60d965f2","updated":"2014-10-10 03:14:35.000000000","message":"I changed it back in the newest patch.\nBecause the json dumps and loads will change tuple into list.","commit_id":"1f442441c78296af37269c333693d2dfd2cb652f"},{"author":{"_account_id":10327,"name":"Feng Xi Yan","email":"yanfengxi@cn.ibm.com","username":"yanfengxi"},"change_message_id":"3738f0c38745b167e2c45e9368e5008c12d013c5","unresolved":false,"context_lines":[{"line_number":60,"context_line":"        for key, value in six.iteritems(input):"},{"line_number":61,"context_line":"            temp[decode_unicode(key)] \u003d decode_unicode(value)"},{"line_number":62,"context_line":"        return temp"},{"line_number":63,"context_line":"    elif isinstance(input, (tuple, list)):"},{"line_number":64,"context_line":"        return [decode_unicode(element) for element in input]"},{"line_number":65,"context_line":"    elif isinstance(input, unicode):"},{"line_number":66,"context_line":"        return input.encode(\u0027utf-8\u0027)"}],"source_content_type":"text/x-python","patch_set":6,"id":"baa201ad_6593375b","line":63,"in_reply_to":"baa201ad_651ed70d","updated":"2014-10-08 08:53:48.000000000","message":"Firstly, this is in same consideration with L77(and followed comments).\nSecondly, no matter return tuple or list, it does not interfere the signature computation.","commit_id":"1f442441c78296af37269c333693d2dfd2cb652f"},{"author":{"_account_id":10987,"name":"Igor Degtiarov","username":"tovstun","inactive":true},"change_message_id":"8930062e80424c13e0159224035b1249c829aedf","unresolved":false,"context_lines":[{"line_number":60,"context_line":"        for key, value in six.iteritems(input):"},{"line_number":61,"context_line":"            temp[decode_unicode(key)] \u003d decode_unicode(value)"},{"line_number":62,"context_line":"        return temp"},{"line_number":63,"context_line":"    elif isinstance(input, (tuple, list)):"},{"line_number":64,"context_line":"        return [decode_unicode(element) for element in input]"},{"line_number":65,"context_line":"    elif isinstance(input, unicode):"},{"line_number":66,"context_line":"        return input.encode(\u0027utf-8\u0027)"}],"source_content_type":"text/x-python","patch_set":6,"id":"baa201ad_20eafdab","line":63,"in_reply_to":"baa201ad_6593375b","updated":"2014-10-08 09:30:37.000000000","message":"Oh, I see! But I thought that this function could be used in other parts in our project so for consistency it would be better to return tuple if tuple was got. amirignt with it?","commit_id":"1f442441c78296af37269c333693d2dfd2cb652f"},{"author":{"_account_id":8052,"name":"Nejc Saje","email":"nejc@saje.info","username":"nsaje"},"change_message_id":"8bdb20e15f44bea7d6932760b658addf10443cf0","unresolved":false,"context_lines":[{"line_number":65,"context_line":"            # list here."},{"line_number":66,"context_line":""},{"line_number":67,"context_line":"            # in the special case of the list item itself being a dict,"},{"line_number":68,"context_line":"            # create an equivalent dict with a predictable insertion order"},{"line_number":69,"context_line":"            # to avoid inconsistencies in the message signature computation"},{"line_number":70,"context_line":"            # for equivalent payloads modulo ordering"},{"line_number":71,"context_line":"            first \u003d lambda i: i[0]"}],"source_content_type":"text/x-python","patch_set":11,"id":"baa201ad_6cee86b6","side":"PARENT","line":68,"updated":"2014-10-10 07:37:17.000000000","message":"Shouldn\u0027t predictable insertion order taken into account in the new code?","commit_id":"a3d6ef216fd10014cd848293fdc79d8eaf927768"},{"author":{"_account_id":10327,"name":"Feng Xi Yan","email":"yanfengxi@cn.ibm.com","username":"yanfengxi"},"change_message_id":"9d33b3e24e3c5554bee75c292d23eb885577ad8e","unresolved":false,"context_lines":[{"line_number":65,"context_line":"            # list here."},{"line_number":66,"context_line":""},{"line_number":67,"context_line":"            # in the special case of the list item itself being a dict,"},{"line_number":68,"context_line":"            # create an equivalent dict with a predictable insertion order"},{"line_number":69,"context_line":"            # to avoid inconsistencies in the message signature computation"},{"line_number":70,"context_line":"            # for equivalent payloads modulo ordering"},{"line_number":71,"context_line":"            first \u003d lambda i: i[0]"}],"source_content_type":"text/x-python","patch_set":11,"id":"baa201ad_ffcf7655","side":"PARENT","line":68,"in_reply_to":"baa201ad_6cee86b6","updated":"2014-10-10 08:08:59.000000000","message":"I will add the sort action in decode_unicode","commit_id":"a3d6ef216fd10014cd848293fdc79d8eaf927768"},{"author":{"_account_id":8052,"name":"Nejc Saje","email":"nejc@saje.info","username":"nsaje"},"change_message_id":"8bdb20e15f44bea7d6932760b658addf10443cf0","unresolved":false,"context_lines":[{"line_number":34,"context_line":"import six"},{"line_number":35,"context_line":""},{"line_number":36,"context_line":""},{"line_number":37,"context_line":"# Make unicode work with python3"},{"line_number":38,"context_line":"try:"},{"line_number":39,"context_line":"    unicode"},{"line_number":40,"context_line":"except NameError:"}],"source_content_type":"text/x-python","patch_set":11,"id":"baa201ad_2cc63e4a","line":37,"updated":"2014-10-10 07:37:17.000000000","message":"Please use six.text_type instead, which has a value of `unicode` in Py2 and `str` in Py3.","commit_id":"86677af3aa273eb69e4275352a68b0dc5009a3d8"},{"author":{"_account_id":10327,"name":"Feng Xi Yan","email":"yanfengxi@cn.ibm.com","username":"yanfengxi"},"change_message_id":"9d33b3e24e3c5554bee75c292d23eb885577ad8e","unresolved":false,"context_lines":[{"line_number":34,"context_line":"import six"},{"line_number":35,"context_line":""},{"line_number":36,"context_line":""},{"line_number":37,"context_line":"# Make unicode work with python3"},{"line_number":38,"context_line":"try:"},{"line_number":39,"context_line":"    unicode"},{"line_number":40,"context_line":"except NameError:"}],"source_content_type":"text/x-python","patch_set":11,"id":"baa201ad_5fd7a2ed","line":37,"in_reply_to":"baa201ad_2cc63e4a","updated":"2014-10-10 08:08:59.000000000","message":"Good one!","commit_id":"86677af3aa273eb69e4275352a68b0dc5009a3d8"},{"author":{"_account_id":8052,"name":"Nejc Saje","email":"nejc@saje.info","username":"nsaje"},"change_message_id":"3e0c9c9ad83acc597024c7c9cdab3952bacc63e4","unresolved":false,"context_lines":[{"line_number":88,"context_line":"            # in the special case of the list item itself being a dict,"},{"line_number":89,"context_line":"            # create an equivalent dict with a predictable insertion order"},{"line_number":90,"context_line":"            # to avoid inconsistencies in the message signature computation"},{"line_number":91,"context_line":"            # for equivalent payloads modulo ordering"},{"line_number":92,"context_line":"            yield name, decode_unicode(value)"},{"line_number":93,"context_line":"        else:"},{"line_number":94,"context_line":"            yield name, value"}],"source_content_type":"text/x-python","patch_set":11,"id":"baa201ad_1d50c25d","line":91,"updated":"2014-10-10 09:46:17.000000000","message":"Could you just move this coment into the decode_unicode function instead of deleting it? Since it still applies to the new code.","commit_id":"86677af3aa273eb69e4275352a68b0dc5009a3d8"},{"author":{"_account_id":8052,"name":"Nejc Saje","email":"nejc@saje.info","username":"nsaje"},"change_message_id":"9ab287008ad7934ccf942797b9de45d34b1e657a","unresolved":false,"context_lines":[{"line_number":67,"context_line":"            # in the special case of the list item itself being a dict,"},{"line_number":68,"context_line":"            # create an equivalent dict with a predictable insertion order"},{"line_number":69,"context_line":"            # to avoid inconsistencies in the message signature computation"},{"line_number":70,"context_line":"            # for equivalent payloads modulo ordering"},{"line_number":71,"context_line":"            first \u003d lambda i: i[0]"},{"line_number":72,"context_line":"            m \u003d map(lambda x: six.text_type(dict(sorted(x.items(), key\u003dfirst))"},{"line_number":73,"context_line":"                                            if isinstance(x, dict)"}],"source_content_type":"text/x-python","patch_set":12,"id":"baa201ad_38acb48c","side":"PARENT","line":70,"updated":"2014-10-10 09:40:05.000000000","message":"Could you just move this coment into the decode_unicode function instead of deleting it? Since it still applies to the new code.","commit_id":"a3d6ef216fd10014cd848293fdc79d8eaf927768"},{"author":{"_account_id":10327,"name":"Feng Xi Yan","email":"yanfengxi@cn.ibm.com","username":"yanfengxi"},"change_message_id":"538db14400110e703aa421ffdab3a675a55b9169","unresolved":false,"context_lines":[{"line_number":67,"context_line":"            # in the special case of the list item itself being a dict,"},{"line_number":68,"context_line":"            # create an equivalent dict with a predictable insertion order"},{"line_number":69,"context_line":"            # to avoid inconsistencies in the message signature computation"},{"line_number":70,"context_line":"            # for equivalent payloads modulo ordering"},{"line_number":71,"context_line":"            first \u003d lambda i: i[0]"},{"line_number":72,"context_line":"            m \u003d map(lambda x: six.text_type(dict(sorted(x.items(), key\u003dfirst))"},{"line_number":73,"context_line":"                                            if isinstance(x, dict)"}],"source_content_type":"text/x-python","patch_set":12,"id":"baa201ad_38f11496","side":"PARENT","line":70,"in_reply_to":"baa201ad_38acb48c","updated":"2014-10-10 09:44:06.000000000","message":"Done","commit_id":"a3d6ef216fd10014cd848293fdc79d8eaf927768"}]}
