)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":2284,"name":"Eoghan Glynn","email":"eglynn@redhat.com","username":"eglynn"},"change_message_id":"a15fb242169e91c28995baf17edbd6c3863253d6","unresolved":false,"context_lines":[{"line_number":9,"context_line":"This change allows to set the matching_metadata of a alarm like this:"},{"line_number":10,"context_line":""},{"line_number":11,"context_line":" ceilometer alarm-create --matching-metadata \u0027key:value\u0027 \\"},{"line_number":12,"context_line":"      --matching-metadata \u0027key2:value2\u0027 --name \u0027alarm\u0027 ..."},{"line_number":13,"context_line":""},{"line_number":14,"context_line":"Fixes bug #1201877"},{"line_number":15,"context_line":""}],"source_content_type":"text/x-gerrit-commit-message","patch_set":4,"id":"AAAAQn%2F%2F1wc%3D","line":12,"updated":"2013-07-22 10:56:38.000000000","message":"s/key2:value2/key2\u003dvalue2/","commit_id":"b36f3c5477e701ee293f0f8f7548096fff7c0645"},{"author":{"_account_id":2813,"name":"Mehdi Abaakouk","email":"sileht@sileht.net","username":"sileht"},"change_message_id":"5d9adddda9594f543ff75261900250726f0ed186","unresolved":false,"context_lines":[{"line_number":9,"context_line":"This change allows to set the matching_metadata of a alarm like this:"},{"line_number":10,"context_line":""},{"line_number":11,"context_line":" ceilometer alarm-create --matching-metadata \u0027key:value\u0027 \\"},{"line_number":12,"context_line":"      --matching-metadata \u0027key2:value2\u0027 --name \u0027alarm\u0027 ..."},{"line_number":13,"context_line":""},{"line_number":14,"context_line":"Fixes bug #1201877"},{"line_number":15,"context_line":""}],"source_content_type":"text/x-gerrit-commit-message","patch_set":4,"id":"AAAAQn%2F%2F0%2FY%3D","line":12,"in_reply_to":"AAAAQn%2F%2F1wc%3D","updated":"2013-07-22 15:43:05.000000000","message":"Done","commit_id":"b36f3c5477e701ee293f0f8f7548096fff7c0645"}],"ceilometerclient/common/utils.py":[{"author":{"_account_id":2284,"name":"Eoghan Glynn","email":"eglynn@redhat.com","username":"eglynn"},"change_message_id":"526d475aec6bc906a465fe690be889f8da5d29b7","unresolved":false,"context_lines":[{"line_number":133,"context_line":"        kwargs[key_to_convert] \u003d {}"},{"line_number":134,"context_line":"        for item in value_to_convert:"},{"line_number":135,"context_line":"            try:"},{"line_number":136,"context_line":"                key, value \u003d item.split(\":\")"},{"line_number":137,"context_line":"            except ValueError:"},{"line_number":138,"context_line":"                raise exc.CommandError("},{"line_number":139,"context_line":"                    \u0027%s must be key:value not \"%s\"\u0027 % (key_to_convert,"}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAAQn%2F%2F1%2BM%3D","line":136,"updated":"2013-07-22 09:24:16.000000000","message":"Wondering if this should be split on \u0027\u003d\u0027 instead of \u0027:\u0027, in order to line up with the \u0027nova boot --meta key\u003dvalue ...\u0027 style of setting user metadata on a fresh instance.\n\nSince its likely that some users will be come across both commands (spin up some instances with metadata set, then create an over-arching alarm), it would I think be good to keep the syntax consistent.","commit_id":"c96108d89c07455e9ae85715ff15b6afe4319278"},{"author":{"_account_id":2813,"name":"Mehdi Abaakouk","email":"sileht@sileht.net","username":"sileht"},"change_message_id":"0e2726a520a60d93fcacdcedd87716e65f81cb99","unresolved":false,"context_lines":[{"line_number":133,"context_line":"        kwargs[key_to_convert] \u003d {}"},{"line_number":134,"context_line":"        for item in value_to_convert:"},{"line_number":135,"context_line":"            try:"},{"line_number":136,"context_line":"                key, value \u003d item.split(\":\")"},{"line_number":137,"context_line":"            except ValueError:"},{"line_number":138,"context_line":"                raise exc.CommandError("},{"line_number":139,"context_line":"                    \u0027%s must be key:value not \"%s\"\u0027 % (key_to_convert,"}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAAQn%2F%2F11U%3D","line":136,"in_reply_to":"AAAAQn%2F%2F1%2BM%3D","updated":"2013-07-22 10:38:20.000000000","message":"Oh yes :), Done","commit_id":"c96108d89c07455e9ae85715ff15b6afe4319278"},{"author":{"_account_id":1669,"name":"Julien Danjou","display_name":"jd","email":"julien@danjou.info","username":"jdanjou"},"change_message_id":"218a0705836f2c38dd32996ff2669590c9c17546","unresolved":false,"context_lines":[{"line_number":133,"context_line":"        kwargs[key_to_convert] \u003d {}"},{"line_number":134,"context_line":"        for item in value_to_convert:"},{"line_number":135,"context_line":"            try:"},{"line_number":136,"context_line":"                key, value \u003d item.split(\"\u003d\")"},{"line_number":137,"context_line":"            except ValueError:"},{"line_number":138,"context_line":"                raise exc.CommandError("},{"line_number":139,"context_line":"                    \u0027%s must be key\u003dvalue not \"%s\"\u0027 % (key_to_convert,"}],"source_content_type":"text/x-python","patch_set":4,"id":"AAAAQn%2F%2F1yw%3D","line":136,"updated":"2013-07-22 10:57:37.000000000","message":"split(\"\u003d\", 1) may be safer","commit_id":"b36f3c5477e701ee293f0f8f7548096fff7c0645"},{"author":{"_account_id":2813,"name":"Mehdi Abaakouk","email":"sileht@sileht.net","username":"sileht"},"change_message_id":"5d9adddda9594f543ff75261900250726f0ed186","unresolved":false,"context_lines":[{"line_number":133,"context_line":"        kwargs[key_to_convert] \u003d {}"},{"line_number":134,"context_line":"        for item in value_to_convert:"},{"line_number":135,"context_line":"            try:"},{"line_number":136,"context_line":"                key, value \u003d item.split(\"\u003d\")"},{"line_number":137,"context_line":"            except ValueError:"},{"line_number":138,"context_line":"                raise exc.CommandError("},{"line_number":139,"context_line":"                    \u0027%s must be key\u003dvalue not \"%s\"\u0027 % (key_to_convert,"}],"source_content_type":"text/x-python","patch_set":4,"id":"AAAAQn%2F%2F0%2Fc%3D","line":136,"in_reply_to":"AAAAQn%2F%2F1yw%3D","updated":"2013-07-22 15:43:05.000000000","message":"Done","commit_id":"b36f3c5477e701ee293f0f8f7548096fff7c0645"},{"author":{"_account_id":1669,"name":"Julien Danjou","display_name":"jd","email":"julien@danjou.info","username":"jdanjou"},"change_message_id":"218a0705836f2c38dd32996ff2669590c9c17546","unresolved":false,"context_lines":[{"line_number":140,"context_line":"                                                       item))"},{"line_number":141,"context_line":"            kwargs[key_to_convert][key] \u003d value"},{"line_number":142,"context_line":"    return kwargs"},{"line_number":143,"context_line":""},{"line_number":144,"context_line":""},{"line_number":145,"context_line":"def exit(msg\u003d\u0027\u0027):"},{"line_number":146,"context_line":"    if msg:"}],"source_content_type":"text/x-python","patch_set":4,"id":"AAAAQn%2F%2F1wU%3D","line":143,"updated":"2013-07-22 10:57:37.000000000","message":"I think that might be written simpler as:\n\nvalue_to_convert \u003d kwargs.get(key_to_convert)\nif value_to_convert:\n  try:\n    kwargs[key_to_convert] \u003d dict([value_to_convert.split(\"\u003d\", 1)])\n  except ValueError:\n    raise exc.CommandError(...)\nreturn kwargs\n\n:)","commit_id":"b36f3c5477e701ee293f0f8f7548096fff7c0645"},{"author":{"_account_id":2813,"name":"Mehdi Abaakouk","email":"sileht@sileht.net","username":"sileht"},"change_message_id":"5d9adddda9594f543ff75261900250726f0ed186","unresolved":false,"context_lines":[{"line_number":140,"context_line":"                                                       item))"},{"line_number":141,"context_line":"            kwargs[key_to_convert][key] \u003d value"},{"line_number":142,"context_line":"    return kwargs"},{"line_number":143,"context_line":""},{"line_number":144,"context_line":""},{"line_number":145,"context_line":"def exit(msg\u003d\u0027\u0027):"},{"line_number":146,"context_line":"    if msg:"}],"source_content_type":"text/x-python","patch_set":4,"id":"AAAAQn%2F%2F0%2Fg%3D","line":143,"in_reply_to":"AAAAQn%2F%2F1wU%3D","updated":"2013-07-22 15:43:05.000000000","message":"Done","commit_id":"b36f3c5477e701ee293f0f8f7548096fff7c0645"}],"ceilometerclient/v2/shell.py":[{"author":{"_account_id":1669,"name":"Julien Danjou","display_name":"jd","email":"julien@danjou.info","username":"jdanjou"},"change_message_id":"e10fff22d1852ded318f120da3d6e8f44a164dc9","unresolved":false,"context_lines":[{"line_number":170,"context_line":"                 \u0027May be used multiple times.\u0027))"},{"line_number":171,"context_line":"@utils.arg(\u0027--matching-metadata\u0027, dest\u003d\u0027matching_metadata\u0027,"},{"line_number":172,"context_line":"           metavar\u003d\u0027\u003cMatching Metadata\u003e\u0027, action\u003d\u0027append\u0027, default\u003dNone,"},{"line_number":173,"context_line":"           help\u003d(\u0027A counter should match this metadata (key:value)\u0027"},{"line_number":174,"context_line":"                 \u0027additionnal to the counter_name\u0027))"},{"line_number":175,"context_line":"def do_alarm_create(cc, args\u003d{}):"},{"line_number":176,"context_line":"    \u0027\u0027\u0027Create a new alarm.\u0027\u0027\u0027"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAQn%2F%2F9iQ%3D","line":173,"updated":"2013-07-18 13:19:07.000000000","message":"s/counter/meter/ s/metadata/resource metadata/ I\u0027d say","commit_id":"8e6f07fc63894b6121ecbb6b9e70e58adf29a9ce"},{"author":{"_account_id":2813,"name":"Mehdi Abaakouk","email":"sileht@sileht.net","username":"sileht"},"change_message_id":"70dfd91465ca483905e37e499804bc053c9e9970","unresolved":false,"context_lines":[{"line_number":170,"context_line":"                 \u0027May be used multiple times.\u0027))"},{"line_number":171,"context_line":"@utils.arg(\u0027--matching-metadata\u0027, dest\u003d\u0027matching_metadata\u0027,"},{"line_number":172,"context_line":"           metavar\u003d\u0027\u003cMatching Metadata\u003e\u0027, action\u003d\u0027append\u0027, default\u003dNone,"},{"line_number":173,"context_line":"           help\u003d(\u0027A counter should match this metadata (key:value)\u0027"},{"line_number":174,"context_line":"                 \u0027additionnal to the counter_name\u0027))"},{"line_number":175,"context_line":"def do_alarm_create(cc, args\u003d{}):"},{"line_number":176,"context_line":"    \u0027\u0027\u0027Create a new alarm.\u0027\u0027\u0027"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAQn%2F%2F2Dg%3D","line":173,"in_reply_to":"AAAAQn%2F%2F9iQ%3D","updated":"2013-07-22 08:43:29.000000000","message":"Done","commit_id":"8e6f07fc63894b6121ecbb6b9e70e58adf29a9ce"},{"author":{"_account_id":1669,"name":"Julien Danjou","display_name":"jd","email":"julien@danjou.info","username":"jdanjou"},"change_message_id":"e10fff22d1852ded318f120da3d6e8f44a164dc9","unresolved":false,"context_lines":[{"line_number":215,"context_line":"@utils.arg(\u0027--matching-metadata\u0027, dest\u003d\u0027matching_metadata\u0027,"},{"line_number":216,"context_line":"           metavar\u003d\u0027\u003cMatching Metadata\u003e\u0027, action\u003d\u0027append\u0027, default\u003dNone,"},{"line_number":217,"context_line":"           help\u003d(\u0027A counter should match this metadata (key:value)\u0027"},{"line_number":218,"context_line":"                 \u0027additionnal to the counter_name\u0027))"},{"line_number":219,"context_line":"def do_alarm_update(cc, args\u003d{}):"},{"line_number":220,"context_line":"    \u0027\u0027\u0027Update an existing alarm.\u0027\u0027\u0027"},{"line_number":221,"context_line":"    fields \u003d dict(filter(lambda x: not (x[1] is None), vars(args).items()))"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAQn%2F%2F9h8%3D","line":218,"updated":"2013-07-18 13:19:07.000000000","message":"Same.","commit_id":"8e6f07fc63894b6121ecbb6b9e70e58adf29a9ce"},{"author":{"_account_id":2813,"name":"Mehdi Abaakouk","email":"sileht@sileht.net","username":"sileht"},"change_message_id":"70dfd91465ca483905e37e499804bc053c9e9970","unresolved":false,"context_lines":[{"line_number":215,"context_line":"@utils.arg(\u0027--matching-metadata\u0027, dest\u003d\u0027matching_metadata\u0027,"},{"line_number":216,"context_line":"           metavar\u003d\u0027\u003cMatching Metadata\u003e\u0027, action\u003d\u0027append\u0027, default\u003dNone,"},{"line_number":217,"context_line":"           help\u003d(\u0027A counter should match this metadata (key:value)\u0027"},{"line_number":218,"context_line":"                 \u0027additionnal to the counter_name\u0027))"},{"line_number":219,"context_line":"def do_alarm_update(cc, args\u003d{}):"},{"line_number":220,"context_line":"    \u0027\u0027\u0027Update an existing alarm.\u0027\u0027\u0027"},{"line_number":221,"context_line":"    fields \u003d dict(filter(lambda x: not (x[1] is None), vars(args).items()))"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAQn%2F%2F2DY%3D","line":218,"in_reply_to":"AAAAQn%2F%2F9h8%3D","updated":"2013-07-22 08:43:29.000000000","message":"Done","commit_id":"8e6f07fc63894b6121ecbb6b9e70e58adf29a9ce"}]}
