)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":16222,"name":"witek","email":"witold.bedyk@suse.com","username":"witek"},"change_message_id":"74b479a84e706667c33e721361bc412aa7f40ce4","unresolved":false,"context_lines":[{"line_number":4,"context_line":"Commit:     Kamil Choroba \u003ckamil.choroba@est.fujitsu.com\u003e"},{"line_number":5,"context_line":"CommitDate: 2017-03-01 15:09:10 +0100"},{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Bugfix: Dimensions with multiple colons raises malformed execption"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Monasca-Agent http_check plugin creates dimensions"},{"line_number":10,"context_line":"which contain multiple colons:"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":1,"id":"ba2be162_40b71d39","line":7,"range":{"start_line":7,"start_character":0,"end_line":7,"end_character":66},"updated":"2017-03-01 14:57:45.000000000","message":"The first line should be shorter than 50 characters.","commit_id":"6171c8c9a1b37269d8801ce93a64db59b5dc116d"},{"author":{"_account_id":15178,"name":"Kamil Choroba","email":"kamil.choroba@est.fujitsu.com","username":"kchoroba"},"change_message_id":"b7e84fe0ed1f9d6968298b0ee3d82eed2bb4a5f1","unresolved":false,"context_lines":[{"line_number":4,"context_line":"Commit:     Kamil Choroba \u003ckamil.choroba@est.fujitsu.com\u003e"},{"line_number":5,"context_line":"CommitDate: 2017-03-01 15:09:10 +0100"},{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Bugfix: Dimensions with multiple colons raises malformed execption"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Monasca-Agent http_check plugin creates dimensions"},{"line_number":10,"context_line":"which contain multiple colons:"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":1,"id":"ba2be162_a2f8bd4a","line":7,"range":{"start_line":7,"start_character":0,"end_line":7,"end_character":66},"in_reply_to":"ba2be162_40b71d39","updated":"2017-03-02 05:50:43.000000000","message":"thx and done","commit_id":"6171c8c9a1b37269d8801ce93a64db59b5dc116d"},{"author":{"_account_id":16222,"name":"witek","email":"witold.bedyk@suse.com","username":"witek"},"change_message_id":"74b479a84e706667c33e721361bc412aa7f40ce4","unresolved":false,"context_lines":[{"line_number":14,"context_line":"metrics with such dimensions. Until now an exception"},{"line_number":15,"context_line":"was thrown."},{"line_number":16,"context_line":""},{"line_number":17,"context_line":"Fixed bug:"},{"line_number":18,"context_line":""},{"line_number":19,"context_line":"  - #1668937 https://bugs.launchpad.net/monasca/+bug/1668937"},{"line_number":20,"context_line":""},{"line_number":21,"context_line":"Change-Id: I39ed6fba99491630f6a7e0c67743b807e3529461"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":1,"id":"ba2be162_60ffc101","line":19,"range":{"start_line":17,"start_character":0,"end_line":19,"end_character":60},"updated":"2017-03-01 14:57:45.000000000","message":"Please use the following for automatic updates to Launchpad:\n\n Closes-Bug: 1668937","commit_id":"6171c8c9a1b37269d8801ce93a64db59b5dc116d"},{"author":{"_account_id":15178,"name":"Kamil Choroba","email":"kamil.choroba@est.fujitsu.com","username":"kchoroba"},"change_message_id":"b7e84fe0ed1f9d6968298b0ee3d82eed2bb4a5f1","unresolved":false,"context_lines":[{"line_number":14,"context_line":"metrics with such dimensions. Until now an exception"},{"line_number":15,"context_line":"was thrown."},{"line_number":16,"context_line":""},{"line_number":17,"context_line":"Fixed bug:"},{"line_number":18,"context_line":""},{"line_number":19,"context_line":"  - #1668937 https://bugs.launchpad.net/monasca/+bug/1668937"},{"line_number":20,"context_line":""},{"line_number":21,"context_line":"Change-Id: I39ed6fba99491630f6a7e0c67743b807e3529461"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":1,"id":"ba2be162_c295b1e4","line":19,"range":{"start_line":17,"start_character":0,"end_line":19,"end_character":60},"in_reply_to":"ba2be162_60ffc101","updated":"2017-03-02 05:50:43.000000000","message":"also thx and done","commit_id":"6171c8c9a1b37269d8801ce93a64db59b5dc116d"},{"author":{"_account_id":16168,"name":"Tomasz Trębski","email":"kornicameister@gmail.com","username":"trebskit"},"change_message_id":"25a90bf6e610d29e285e179f5e25be252bd5ecbb","unresolved":false,"context_lines":[{"line_number":16,"context_line":""},{"line_number":17,"context_line":"Fixed bug:"},{"line_number":18,"context_line":""},{"line_number":19,"context_line":"  - Closes-Bug: 1668937"},{"line_number":20,"context_line":""},{"line_number":21,"context_line":"Change-Id: I39ed6fba99491630f6a7e0c67743b807e3529461"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":3,"id":"ba2be162_b3f723f4","line":19,"updated":"2017-03-02 10:48:53.000000000","message":"nit: It is usually written above Change-Id (or below) and not as a list.","commit_id":"159b96b3a373c8d4b080fc27ddba92d512842783"},{"author":{"_account_id":15178,"name":"Kamil Choroba","email":"kamil.choroba@est.fujitsu.com","username":"kchoroba"},"change_message_id":"643aa66392dec5a4185c7366b1e3d9b9039ccc15","unresolved":false,"context_lines":[{"line_number":16,"context_line":""},{"line_number":17,"context_line":"Fixed bug:"},{"line_number":18,"context_line":""},{"line_number":19,"context_line":"  - Closes-Bug: 1668937"},{"line_number":20,"context_line":""},{"line_number":21,"context_line":"Change-Id: I39ed6fba99491630f6a7e0c67743b807e3529461"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":3,"id":"ba2be162_3ea213af","line":19,"in_reply_to":"ba2be162_b3f723f4","updated":"2017-03-02 12:40:05.000000000","message":"Done","commit_id":"159b96b3a373c8d4b080fc27ddba92d512842783"}],"monasca_api/v2/reference/helpers.py":[{"author":{"_account_id":14517,"name":"Ryan Brandt","email":"ryan.brandt@hpe.com","username":"ryan-brandt"},"change_message_id":"710574a661d27ba1b896931aa5df4dc26b401ebd","unresolved":false,"context_lines":[{"line_number":164,"context_line":"            raise Exception(\"Error parsing dimensions, unknown format\")"},{"line_number":165,"context_line":""},{"line_number":166,"context_line":"        for dimension in dimensions_str_array:"},{"line_number":167,"context_line":"            dimension_name_value \u003d dimension.split(\u0027:\u0027, 1)"},{"line_number":168,"context_line":"            if len(dimension_name_value) \u003d\u003d 2:"},{"line_number":169,"context_line":"                dimensions[dimension_name_value[0]] \u003d dimension_name_value[1]"},{"line_number":170,"context_line":"            elif len(dimension_name_value) \u003d\u003d 1:"}],"source_content_type":"text/x-python","patch_set":1,"id":"ba2be162_27915bf1","line":167,"range":{"start_line":167,"start_character":45,"end_line":167,"end_character":58},"updated":"2017-03-01 16:36:15.000000000","message":"This could lead to inaccurate data with no error if the dimension key contains \u0027:\u0027.","commit_id":"6171c8c9a1b37269d8801ce93a64db59b5dc116d"},{"author":{"_account_id":15178,"name":"Kamil Choroba","email":"kamil.choroba@est.fujitsu.com","username":"kchoroba"},"change_message_id":"844e354c7e6a04cbaef1728d2653c4046ac525e8","unresolved":false,"context_lines":[{"line_number":164,"context_line":"            raise Exception(\"Error parsing dimensions, unknown format\")"},{"line_number":165,"context_line":""},{"line_number":166,"context_line":"        for dimension in dimensions_str_array:"},{"line_number":167,"context_line":"            dimension_name_value \u003d dimension.split(\u0027:\u0027, 1)"},{"line_number":168,"context_line":"            if len(dimension_name_value) \u003d\u003d 2:"},{"line_number":169,"context_line":"                dimensions[dimension_name_value[0]] \u003d dimension_name_value[1]"},{"line_number":170,"context_line":"            elif len(dimension_name_value) \u003d\u003d 1:"}],"source_content_type":"text/x-python","patch_set":1,"id":"ba2be162_e27c75ed","line":167,"range":{"start_line":167,"start_character":45,"end_line":167,"end_character":58},"in_reply_to":"ba2be162_27915bf1","updated":"2017-03-02 05:46:02.000000000","message":"What, if we would add the \u0027:\u0027 to the invalid characters for the key?","commit_id":"6171c8c9a1b37269d8801ce93a64db59b5dc116d"},{"author":{"_account_id":15178,"name":"Kamil Choroba","email":"kamil.choroba@est.fujitsu.com","username":"kchoroba"},"change_message_id":"5a37a0225b15174e41316ddff60541182d4a08fe","unresolved":false,"context_lines":[{"line_number":164,"context_line":"            raise Exception(\"Error parsing dimensions, unknown format\")"},{"line_number":165,"context_line":""},{"line_number":166,"context_line":"        for dimension in dimensions_str_array:"},{"line_number":167,"context_line":"            dimension_name_value \u003d dimension.split(\u0027:\u0027, 1)"},{"line_number":168,"context_line":"            if len(dimension_name_value) \u003d\u003d 2:"},{"line_number":169,"context_line":"                dimensions[dimension_name_value[0]] \u003d dimension_name_value[1]"},{"line_number":170,"context_line":"            elif len(dimension_name_value) \u003d\u003d 1:"}],"source_content_type":"text/x-python","patch_set":1,"id":"ba2be162_18e95cb7","line":167,"range":{"start_line":167,"start_character":45,"end_line":167,"end_character":58},"in_reply_to":"ba2be162_7e1000a9","updated":"2017-03-06 13:57:40.000000000","message":"I\u0027ve checked the current java api implementation, because we had no problems with the java version so far. We found that the current behavior in java is the same as we want to implement for python. The dimension string is splitted on the first occurred colon. Everything else is the value:\n\nhttps://github.com/openstack/monasca-api/blob/master/java/src/main/java/monasca/api/app/validation/Validation.java#L45\nhttps://github.com/openstack/monasca-api/blob/master/java/src/main/java/monasca/api/app/validation/Validation.java#L101\n\nI think we should have the same functioniality in both implementations.","commit_id":"6171c8c9a1b37269d8801ce93a64db59b5dc116d"},{"author":{"_account_id":14517,"name":"Ryan Brandt","email":"ryan.brandt@hpe.com","username":"ryan-brandt"},"change_message_id":"6a6b1023b1fe43a76aaa037b87d00b6fa1255ed0","unresolved":false,"context_lines":[{"line_number":164,"context_line":"            raise Exception(\"Error parsing dimensions, unknown format\")"},{"line_number":165,"context_line":""},{"line_number":166,"context_line":"        for dimension in dimensions_str_array:"},{"line_number":167,"context_line":"            dimension_name_value \u003d dimension.split(\u0027:\u0027, 1)"},{"line_number":168,"context_line":"            if len(dimension_name_value) \u003d\u003d 2:"},{"line_number":169,"context_line":"                dimensions[dimension_name_value[0]] \u003d dimension_name_value[1]"},{"line_number":170,"context_line":"            elif len(dimension_name_value) \u003d\u003d 1:"}],"source_content_type":"text/x-python","patch_set":1,"id":"ba2be162_7e1000a9","line":167,"range":{"start_line":167,"start_character":45,"end_line":167,"end_character":58},"in_reply_to":"ba2be162_e27c75ed","updated":"2017-03-02 15:17:20.000000000","message":"In general, adding new characters to the restricted list is not a great option. It would be more worthwhile I think to add a way to delineate the keys and values. Perhaps surrounding them with quotes, then we just have to not allow a \" as a starting or ending character.","commit_id":"6171c8c9a1b37269d8801ce93a64db59b5dc116d"},{"author":{"_account_id":14517,"name":"Ryan Brandt","email":"ryan.brandt@hpe.com","username":"ryan-brandt"},"change_message_id":"29583a8f9d035bc78788e30b9b21feef16a39eed","unresolved":false,"context_lines":[{"line_number":169,"context_line":"                dimensions[dimension_name_value[0]] \u003d dimension_name_value[1]"},{"line_number":170,"context_line":"            elif len(dimension_name_value) \u003d\u003d 1:"},{"line_number":171,"context_line":"                dimensions[dimension_name_value[0]] \u003d \"\""},{"line_number":172,"context_line":"        return dimensions"},{"line_number":173,"context_line":"    except Exception as ex:"},{"line_number":174,"context_line":"        LOG.debug(ex)"},{"line_number":175,"context_line":"        raise HTTPUnprocessableEntityError(\u0027Unprocessable Entity\u0027, ex.message)"}],"source_content_type":"text/x-python","patch_set":4,"id":"ba2be162_bed7d8bd","line":172,"updated":"2017-03-02 15:18:18.000000000","message":"I\u0027m not sure we want to remove this exception either. We do want to stop processing if we don\u0027t understand the input.","commit_id":"355f7bd0db4e7b920388b8ef3a2a6a8a8c1a1e6b"},{"author":{"_account_id":15178,"name":"Kamil Choroba","email":"kamil.choroba@est.fujitsu.com","username":"kchoroba"},"change_message_id":"5b96d497d408247339ee60c2527fa8348a595848","unresolved":false,"context_lines":[{"line_number":169,"context_line":"                dimensions[dimension_name_value[0]] \u003d dimension_name_value[1]"},{"line_number":170,"context_line":"            elif len(dimension_name_value) \u003d\u003d 1:"},{"line_number":171,"context_line":"                dimensions[dimension_name_value[0]] \u003d \"\""},{"line_number":172,"context_line":"        return dimensions"},{"line_number":173,"context_line":"    except Exception as ex:"},{"line_number":174,"context_line":"        LOG.debug(ex)"},{"line_number":175,"context_line":"        raise HTTPUnprocessableEntityError(\u0027Unprocessable Entity\u0027, ex.message)"}],"source_content_type":"text/x-python","patch_set":4,"id":"ba2be162_0e97ab3a","line":172,"in_reply_to":"ba2be162_bed7d8bd","updated":"2017-03-06 13:58:46.000000000","message":"We could raise an exception if the string is empty. Or we just ignore this dimension. But to raise an exception if the length of the array is something else then 1 or 2 will never happen with this implementation. Because in this situation we already know that we have a string. And independent of the number of colon we will always get at least one and maximum two strings back.","commit_id":"355f7bd0db4e7b920388b8ef3a2a6a8a8c1a1e6b"}]}
